Gatavs markdown2pdf risinājums ar avota kodu operētājsistēmai Linux

priekŔvārds

Markdown ir lielisks veids, kā uzrakstÄ«t Ä«su rakstu un dažreiz diezgan daudz teksta, izmantojot vienkārÅ”u slÄ«prakstu un treknrakstu. Markdown ir piemērots arÄ« rakstu rakstÄ«Å”anai ar iekļautu pirmkodu. Bet dažreiz gribas nezaudēt, dejot ar tamburÄ«nu, lai to apdzÄ«tu par parastu, labi noformētu PDF failu, un lai konvertÄ“Å”anas laikā nerastos problēmas, kas, piemēram, man bija - krieviski rakstÄ«t nevar. pirmkoda komentāri, pārāk garas rindas netiek pārsÅ«tÄ«tas, bet izgrieztas un citas nelielas problēmas. Instrukcija ļaus ātri iestatÄ«t pārveidotāju md2pdf Ä«sti nesaprotot, kā tas darbojas. Vairāk vai mazāk automātiskas instalÄ“Å”anas skripts ir norādÄ«ts zemāk attiecÄ«gajā sadaļā.

Mana parauga TeX veidne konvertÄ“Å”anai izmanto PSCyr fontu pakotni, kas ietver atbalstu Microsoft fontiem, proti Times New Roman. Šādas prasÄ«bas diplomam bija saskaņā ar GOST. Ja zināt, kā to izdarÄ«t, varat modificēt veidni atbilstoÅ”i savām vajadzÄ«bām. Manās instrukcijās jums vispirms bÅ«s jāmānās ar PSCyr iestatÄ«jumu pakalpojumā TexLive. IestatÄ«Å”ana tiek veikta Linux Mint Mate izplatÄ«Å”anā, citiem izplatÄ«jumiem, iespējams, bÅ«s jāmeklē Google standarta TexLive pakotņu mapes savai sistēmai.

TexLive instalēŔana

Protams, jÅ«s varat instalēt tikai nepiecieÅ”amās Ŕīs pakotnes daļas. Bet personÄ«gi man, atklāti sakot, bija pārāk slinks, lai meklētu minimāli nepiecieÅ”amo darba instalāciju. Lai pārliecinātos, ka viss darbojas, instalējiet visu TexLive pakotni. Tas tiek saukts texlive-pilns un sver nedaudz vairāk par 2 gigabaitiem, paturiet Å”o faktu prātā. Mēs izpildām komandu:

user@hostname:~$ sudo apt install texlive-full -y

Pēc pietiekami ilgas instalÄ“Å”anas varat pāriet uz nākamo vienumu.

Pandoc Converter instalēŔana

Pandoc ir Linux pakotne, kas ļauj konvertēt dažus teksta formātus citos. Tam ir daudz interesantu funkciju, kuras varat atrast internetā. MÅ«s interesē tikai iespēja konvertēt atzÄ«mes failu uz PDF. Pārbaudiet, vai Pandoc ir instalēts, un, ja nē, instalējiet to. Piemēram, Ŕādi:

user@hostname:~$ dpkg -s pandoc

Ja izvade saka, ka tā nav instalēta, instalējiet:

user@hostname:~$ sudo apt install pandoc -y

PSCyr pakotnes instalēŔana pakalpojumam TexLive

Vispirms jums ir nepiecieÅ”ams lejupielādēt PSCyr. Pagaidām tas joprojām ir pieejams Å”eit saite, ja raksta lasÄ«Å”anas brÄ«dÄ« tas kāda iemesla dēļ nav pieejams, nevajag izmisumā, to ir viegli atrast kopā ar instalÄ“Å”anas instrukcijām, Google ierakstot kaut ko lÄ«dzÄ«gu ā€œInstalling PsCyr texliveā€. Ja tas ir pieejams, tad jums ir vieglāk, lejupielādējiet, un mēs pieņemsim, ka esat izsaiņojis arhÄ«vu savā mājas mapē un tādējādi ceļŔ uz arhÄ«vā esoÅ”o mapi izskatās Ŕādi ~/PSCyr. Pēc tam dodieties uz termināli un pēc tam izpildiet Ŕādas komandas:

user@hostname:~$ cd
user@hostname:~$ mkdir ./PSCyr/fonts/map ./PSCyr/fonts/enc
user@hostname:~$ cp ./PSCyr/dvips/pscyr/*.map ./PSCyr/fonts/map/
user@hostname:~$ cp ./PSCyr/dvips/pscyr/*.enc ./PSCyr/fonts/enc/
user@hostname:~$ echo "fadr6t AdvertisementPSCyr "T2AEncoding ReEncodeFont"" > ./PSCyr/fonts/map/pscyr.map

Pēc tam uzziniet, kur atrodas vietējais direktorijs tekstmf. Mēs izpildām komandu:

user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'

Visticamāk, jums ir Å”is direktorijs - /usr/local/share/texmf/, un tad mēs darām:

user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/

Nu, vai arī jūs nevarat apnikt un palaist komandu, kas tiks kopēta mapē tekstmf lai kur viņa atrastos:

user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')

Instalēti PSCyr fonti, izveidojiet savienojumu ar TexLive:

user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsr

LaTeX veidne md2pdf konvertēŔanai

Es neaprakstÄ«Å”u, kā tieÅ”i Ŕī veidne ir konfigurēta, un vienkārÅ”i norādÄ«Å”u to zem spoilera bez Ä«paÅ”iem paskaidrojumiem. Pietiek pateikt, ka tas ir labi konfigurēts, vismaz attiecÄ«bā uz to, kā tas apstrādā tekstus ar lielu avota kodu. Ja jÅ«s neapmierina atkāpju lielums, atstarpes starp rindām, sadaļu un apakÅ”sadaļu numerācijas trÅ«kums, tad, manuprāt, ir diezgan viegli google meklēt internetā jautājumu ā€œkā to izdarÄ«t lateksā ...ā€ un tad tava vajadzÄ«ba. Ja vispār nav skaidrs, rakstiet komentāros, es mēģināŔu iedziļināties savos iestatÄ«jumos pirms 4 gadiem un aprakstÄ«t, kura veidnes rinda par ko ir atbildÄ«ga. Tikmēr es pierakstÄ«Å”u, kā es to izdarÄ«ju savā datorā, un jÅ«s varat to atkārtot vai pārveidot pats.

Izveidojiet failu veidne.tex katalogā /usr/share/texlive/:

user@hostname:~$ sudo touch /usr/share/texlive/template.tex

Dodiet tai lasīŔanas atļaujas:

user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.tex

atveriet to zem saknes un ielīmējiet tajā saturu, kas paslēpts zem spoilera:

user@hostname:~$ sudo nano /usr/share/texlive/template.tex

Veidnes saturs /usr/share/texlive/template.tex

documentclass[oneside,final,14pt]{extreport}
usepackage{extsizes}
usepackage{pscyr}
renewcommand{rmdefault}{ftm}
usepackage[T2A]{fontenc}
usepackage[utf8]{inputenc}
usepackage{amsmath}
usepackage{mathtext}
usepackage{multirow}
usepackage{listings}
usepackage{ucs}
usepackage{hhline}
usepackage{tabularx}
usepackage{booktabs}
usepackage{longtable}
usepackage{titlesec}
usepackage{hyperref}
usepackage{graphicx}
usepackage{setspace}
usepackage[center,it,labelsep=period]{caption}
usepackage[english,russian,ukrainian]{babel}
usepackage{vmargin}
newcommand{specialcell}[2][c]{%
    begin{tabular}[#1]{@{}c@{}}#2end{tabular}}
setpapersize{A4}
setmarginsrb {1cm}{1cm}{1cm}{1cm}{0pt}{0mm}{0pt}{13mm}
usepackage{indentfirst}
setlengthparindent{1cm}
renewcommand{baselinestretch}{1}
renewcommandthechapter{}
renewcommandthesection{}
renewcommandthesubsection{}
renewcommandthesubsubsection{}
titleformat
{chapter} % command
{bfseriesnormalsizecentering} % format
{thechapter} % label
{0.5ex} % sep
{
    centering
}
[
vspace{-1.5ex}
] % after-code
titleformat
{section}
[block]
{normalfontbfseries}
{thesection}{0.5em}{}
sloppy
letoldenumerateenumerate
renewcommand{enumerate}{
  oldenumerate
  setlength{itemsep}{1pt}
  setlength{parskip}{0pt}
  setlength{parsep}{0pt}
}
letolditemizeitemize
renewcommand{itemize}{
  olditemize
  setlength{itemsep}{1pt}
  setlength{parskip}{0pt}
  setlength{parsep}{0pt}
}
providecommand{tightlist}{%
  setlength{itemsep}{0pt}setlength{parskip}{0pt}}

titlespacing{subsubsection}{parindent}{3mm}{3mm}
titlespacing{subsection}{parindent}{3mm}{3mm}
usepackage{color}

lstset{
    basicstyle=footnotesizettfamily,
    inputencoding=utf8,
    extendedchars=true,
    showspaces=false,
    keepspaces=true
    showstringspaces=false,
    showtabs=false,
    tabsize=4,
    captionpos=b,
    breaklines=true,
    breakatwhitespace=true,
    breakautoindent=true,
    linewidth=textwidth
}

begin{document}
$if(title)$
maketitle
$endif$
$if(abstract)$
begin{abstract}
$abstract$
end{abstract}
$endif$

$for(include-before)$
$include-before$

$endfor$
$if(toc)$
{
$if(colorlinks)$
hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$black$endif$}
$endif$
setcounter{tocdepth}{$toc-depth$}
tableofcontents
}
$endif$
$if(lot)$
listoftables
$endif$
$if(lof)$
listoffigures
$endif$
$body$

$if(natbib)$
$if(bibliography)$
$if(biblio-title)$
$if(book-class)$
renewcommandbibname{$biblio-title$}
$else$
renewcommandrefname{$biblio-title$}
$endif$
$endif$
bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}

$endif$
$endif$
$if(biblatex)$
printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$

$endif$
$for(include-after)$
$include-after$

$endfor$
end{document}

Faila saglabāŔana /usr/share/texlive/template.tex un uzrakstiet skriptu, kas konvertēs Makrdown failu uz PDF, tajā paŔā mapē izveidojot failu Markdown failu ar prefiksu .pdf, tas ir, pēc konvertÄ“Å”anas faila nosaukums.md parādÄ«sies mapē. faila nosaukums.md.pdf. Sauksim skriptu md2pdf un likts ceļā / usr / bin. IzpildÄ«sim komandas pēc kārtas:

user@hostname:~$ cd
user@hostname:~$ touch md2pdf
user@hostname:~$ echo "#!/bin/bash" > md2pdf
user@hostname:~$ echo "pandoc --output=$1.pdf --from=markdown_github --latex-engine=pdflatex --listings --template=/usr/share/texlive/template.tex $1" >> md2pdf
user@hostname:~$ sudo cp md2pdf /usr/bin/
user@hostname:~$ sudo chmod 111 /usr/bin/md2pdf

4. rindā faktiski ir konvertÄ“Å”anas komanda. pievērs uzmanÄ«bu --from=markdown_github. Markdown GitHub versija ir saderÄ«ga ar sākotnējo Markdown, tādēļ, ja tajā ir rakstÄ«ts jÅ«su teksts, jums nav jāuztraucas. Ja jÅ«su MD fails ir rakstÄ«ts noteiktā Markdown dialektā, izlasiet Pandoc rokasgrāmatu (man pandoc), pārliecinieties, vai tas atbalsta jÅ«su ievieÅ”anu, un pielāgojiet to /usr/bin/md2pdf ja nepiecieÅ”ams.

Skripts vairāk vai mazāk automātiskai instalÄ“Å”anai

Ja jÅ«s Ä«sti nevēlaties vispār neko konfigurēt un jums ir Ubuntu lÄ«dzÄ«ga izplatÄ«Å”ana, varat mēģināt izveidot skriptu ar saturu, kas paslēpts zem spoilera, un visticamāk viss instalēsies pats no sevis, vienÄ«gais ir kopēt TeX veidni, kas ievietota zem spoilera, kur jums ir nepiecieÅ”ams. Atveriet termināli un palaidiet:

user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.sh

Pēc tam aizpildiet to ar Ŕādu saturu:

$HOME/installmd2pdf.sh skripta saturs

#!/bin/bash
cd /tmp
sudo apt install texlive-full pandoc -y
wget http://blog.harrix.org/wp-content/uploads/2013/02/PSCyr.zip
unzip -qq PSCyr.zip
cd
mkdir ./PSCyr/fonts/map ./PSCyr/fonts/enc
cp ./PSCyr/dvips/pscyr/*.map ./PSCyr/fonts/map/
cp ./PSCyr/dvips/pscyr/*.enc ./PSCyr/fonts/enc/
echo "fadr6t AdvertisementPSCyr "T2AEncoding ReEncodeFont"" > ./PSCyr/fonts/map/pscyr.map
sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')
sudo texhash
updmap --enable Map=pscyr.map
sudo mktexlsr
sudo touch /usr/share/texlive/template.tex
touch md2pdf
echo "#!/bin/bash" > md2pdf
echo "pandoc --output=$1.pdf --from=markdown_github --latex-engine=pdflatex --listings --template=/usr/share/texlive/template.tex $1" >> md2pdf
sudo cp md2pdf /usr/bin/
sudo chmod 111 /usr/bin/md2pdf

Palaidiet to ar komandu:

user@hostname:~$ sudo bash $HOME/installmd2pdf.sh

Neaizmirstiet to /usr/share/texlive/template.tex jāaizpilda, kā norādÄ«ts sadaļā "LaTeX veidne md2pdf konvertÄ“Å”anaiĀ» saturs.

Izmantojot md2pdf

VienkārŔi atveriet mapi ar Markdown failu (some_file.md) terminālī un palaidiet komandu:

user@hostname:~$ md2pdf some_file.md

Rezultātā mapē parādīsies fails some_file.md.pdf.

Secinājums

Pamatojoties uz aprakstÄ«to metodi, varat izveidot jebkura stila PDF failus, varat arÄ« konvertēt citus formātus, nevis md, jebkurus, kurus atbalsta Pandoc. UzdroÅ”inos cerēt, ka kādu dienu Ŕī instrukcija noderēs 3 ar pusi cilvēkiem.

Avots: www.habr.com

Pievieno komentāru