Úvod
Markdown je skvelý spôsob, ako napísať malý článok, a niekedy aj dostatočne rozsiahly text, s jednoduchým formátovaním vo forme kurzívy a tučného písma. Markdown je tiež dobrý na písanie článkov s údajmi zo zdrojového kódu. Niekedy však chcete bez strát a tancovania s bubnom previesť ho na bežný, dobre formátovaný PDF súbor, a aby neboli problémy pri konverzii, aké som mal ja — nemôžete písať po rusky v komentároch zdrojového kódu, príliš dlhé riadky sa nepresúvajú, ale sú orezané a iné drobné problémy. Tento návod rýchlo nastaví prevodník md2pdf ani veľmi nevenujúc pozornosť tomu, ako to funguje. Skript na viac-menej automatickú inštaláciu je nižšie v príslušnej časti.
Môj príklad TeX šablóny na konverziu používa balík písiem PSCyr, ktorý zahŕňa podporu Microsoft písiem, konkrétne Times New Roman. Takéto boli požiadavky na diplom podľa GOST. Ak viete, môžete šablónu prispôsobiť svojim potrebám. V mojom návode sa však bude musieť najprv trochu babrať s nastavením PSCyr v TexLive. Nastavenie prebieha v distribúcii Linux Mint Mate, pre iné distribúcie možno bude potrebné pohľadať štandardné adresáre balíka TexLive pre vašu systém.
Inštalácia TexLive
Samozrejme, môžete nainštalovať len potrebné časti tohto balíka. Ale osobne som mal otvorene lenivosť hľadať minimálne potrebnú pracovnú inštaláciu. Aby všetko presne fungovalo, nainštalujeme celý balík TexLive. Nazýva sa texlive-full a má o niečo viac ako 2 gigabajty, majte tento fakt na pamäti. Vykonajte príkaz:
user@hostname:~$ sudo apt install texlive-full -yPo dosť dlhšej inštalácii môžeme prejsť k nasledujúcemu bodu.
Inštalácia konvertora Pandoc
Pandoc je balík Linuxu, ktorý umožňuje prevádzať niektoré textové formáty na iné. Má veľa zaujímavých funkcií, s ktorými sa môžete oboznámiť sami na internete. Nás však zaujíma iba možnosť prevodu markdown súboru na PDF. Skontrolujeme, či je Pandoc nainštalovaný, a ak nie, nainštalujeme ho. Napríklad takto:
user@hostname:~$ dpkg -s pandocAk je v výstupe napísané, že nie je nainštalovaný — inštalujeme:
user@hostname:~$ sudo apt install pandoc -yInštalácia balíka PSCyr pre TexLive
Na začiatok je potrebné stiahnuť PSCyr. Zatiaľ je ešte dostupný na tomto , ak na čas čítania článku nie je z nejakého dôvodu k dispozícii, nezúfajte, dá sa ľahko nájsť spolu s inštrukciami na inštaláciu, ak napíšete do Googlu niečo ako „Inštalácia PsCyr texlive“. Ak je však dostupný, tak je to pre vás jednoduchšie, stiahnite si ho a predpokladajme, že ste rozbalili archív do domácej zložky, takže cesta k zložke obsiahnutej v archíve vyzerá ako ~\/PSCyr. Takže otvoríme Terminál a postupne vykonáme príkazy:
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.mapPotom zistíme, kde sa nachádza lokálny adresár texmf. Vykonáme príkaz:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'Pravdepodobne tento adresár máte — /usr/local/share/texmf/, a potom vykonáme:
user@hostname:~$ sudo cp -R .\/PSCyr\/* \/usr\/local\/share\/texmf\/Alebo sa nemusíte trápiť a vykonať príkaz, ktorý skopíruje do zložky texmf kdekoľvek bola:
user@hostname:~$ sudo cp -R .\/PSCyr\/* $(kpsewhich -expand-var='$TEXMFLOCAL')Písma PSCyr sú nainštalované, pripojte ich v TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsrLaTeX šablóna pre konverziu md2pdf
Nebudem opisovať, ako presne je táto šablóna nastavená, a jednoducho ju uvediem pod spoilerom bez ďalších vysvetlení. Stačí povedať, že je nastavená celkom dobre, aspoň pokiaľ ide o spracovanie textov s množstvom zdrojového kódu. Ak vám nevyhovujú veľkosti odsadení, medzi riadkovými intervalmi, absencia číslovania kapitol a podkapitol, tak podľa mňa je to celkom ľahké nájsť otázku na internete „ako v Latex urobiť…“ a ďalej podľa potreby. Ak je to úplne nejasné, píšte do komentárov, pokúsim sa preniknúť do svojich nastavovacích parametrov z pred štyroch rokov a vysvetliť, ktorá časť šablóny za čo zodpovedá. Zatiaľ popíšem, ako som to urobil ja na svojom PC, a vy si to môžete zopakovať alebo prispôsobiť podľa seba.
Vytvorte súbor template.tex v adresári /usr/share/texlive/:
user@hostname:~$ sudo touch \/usr\/share\/texlive\/template.texNastavíme mu práva na čítanie:
user@hostname:~$ sudo chmod 444 \/usr\/share\/texlive\/template.texotvoríme ako root a vložíme doň obsah skrytý pod spoilerom nižšie:
user@hostname:~$ sudo nano \/usr\/share\/texlive\/template.texObsah šablóny \/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}Ukladáme súbor /usr/share/texlive/template.tex a napíšeme skript, ktorý bude konvertovať Markdown súbor do PDF, pričom v tej istej zložke sa vytvorí súbor s názvom Markdown súboru s príponou .pdf, teda po konverzii filename.md v zložke sa objaví filename.md.pdf. Skript nazveme md2pdf a umiestnime ho na cestu /usr/bin. Postupne vykonáme príkazy:
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\/md2pdfNa 4. riadku je vlastne uvedený príkaz na konverziu. Všimnite si —from=markdown_github. GitHub verzia Markdown je spätne kompatibilná s originálnym Markdown, takže ak je váš text napísaný v ňom, nemusíte sa obávať. Ak je však váš MD súbor napísaný v špecifickom dialekte Markdown, prečítajte si manuál k Pandoc (man pandoc), uistite sa, že vaša implementácia ich podporuje, a upravte /usr/bin/md2pdf podľa potreby.
Skript pre relatívne automatickú inštaláciu
Ak nechcete vôbec nič nastavovať a máte distribúciu podobnú Ubuntu, môžete sa pokúsiť vytvoriť skript s obsahom skrytým pod spoilerom, a pravdepodobne sa všetko nainštaluje samo; jediné, čo potrebujete, je, aby ste si sami skopírovali TeX šablónu, ktorú nájdete vyššie. Otvorte terminál a vykonajte:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.shPotom ho vyplňte nasledujúcim obsahom:
Obsah skriptu $HOME/installmd2pdf.sh
#!/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/md2pdfSpustite ho pomocou príkazu:
user@hostname:~$ sudo bash $HOME/installmd2pdf.shNezabúdajte, že /usr/share/texlive/template.tex je potrebné vyplniť obsah uvedený v časti „LaTeX šablóna pre konverziu md2pdf“.
Použitie md2pdf
Jednoducho otvorte priečinok so súborom Markdown (some_file.md) v termináli a vykonajte príkaz:
user@hostname:~$ md2pdf some_file.mdVýsledkom bude v priečinku súbor some_file.md.pdf.
Záver
Na základe opísanej metódy sa dá vytvoriť akýkoľvek štýl PDF súborov, rovnako je možné konvertovať namiesto md aj iné formáty, všetky podporované Pandoc. Dúfam, že tento návod raz pomôže trom a pol ľuďom.
Zdroj: habr.com
