Bevezető
A Markdown egy nagyszerű módszer rövid cikkek, néha elég terjedelmes szövegek írására, egyszerű formázással, például dőlt és vastag betűkkel. A Markdown emellett jó a kódokkal ellátott cikkek írásához is. De néha szeretnénk problémamentesen, zökkenőmentesen átkonvertálni egy jól megszerkesztett PDF fájlba, és nem szeretnénk olyan problémákkal találkozni, mint amilyenek nekem voltak — nem lehet oroszul kommentelni a kódforrásban, a túl hosszú sorokat nem törik meg, hanem levágják, és egyéb apró problémák. Az útmutató gyorsan beállítja a konvertert. md2pdf nem különösebben belemerülve, hogyan működik. Az alábbi szkript egy viszonylag automatikus telepítéshez.
Az én TeX sablonom a konvertáláshoz a PSCyr betűcsomagot használja, amely támogatja a Microsoft betűtípusokat, mégpedig Times New Roman. Ilyenek voltak a követelmények a diplomához a GOST szerint. Ha tudja, módosíthatja a sablont a saját igényei szerint. Az én útmutatóm esetében először kicsit foglalkozni kell a PSCyr beállításával a TexLive-ban. A beállítás a Linux Mint Mate disztribúcióban történik, más disztribúciók esetén lehet, hogy meg kell keresnie a TexLive csomag standard mappáit az Ön rendszeréhez.
TexLive telepítése
Természetesen csak a szükséges részeket is telepítheti ebből a csomagból. De nekem őszintén lusta voltam megkeresni a minimálisan szükséges működő telepítést. Annak érdekében, hogy minden pontosan működjön, telepítsük a teljes TexLive csomagot. Ennek a neve texlive-full és kicsit több mint 2 giga bájt helyet foglal, ezt vegye figyelembe. Futtassa a következő parancsot:
user@hostname:~$ sudo apt install texlive-full -yA viszonylag hosszú telepítés után áttérhetünk a következő pontra.
A Pandoc konverter telepítése
A Pandoc egy Linux csomag, amely lehetővé teszi bizonyos szövegformátumok átalakítását más formátumokká. Sok érdekes lehetőség van benne, amelyekkel önállóan is megismerkedhet az interneten. Minket csak az érdekel, hogy a markdown fájlt PDF-fé alakítsuk. Ellenőrizzük, hogy a Pandoc telepítve van-e, és ha nem, telepítjük. Például így:
user@hostname:~$ dpkg -s pandocHa a kimenetben az áll, hogy nincs telepítve — telepítjük:
user@hostname:~$ sudo apt install pandoc -yA PSCyr csomag telepítése a TexLive-hoz
Először le kell töltenie a PSCyr-t. Még mindig elérhető ezen a címen. , ha a cikk olvasásakor valamilyen okból nem elérhető, ne ess kétségbe, könnyen megtalálhatod az installációs útmutatóval együtt, ha beírsz a Google-ba valami olyasmit, mint "PsCyr texlive telepítése". Ha viszont elérhető, akkor neked is egyszerűbb, töltsd le, és tegyük fel, hogy kicsomagoltad az archívumot a személyes mappádba, így a kicsomagolt mappa elérési útja a következő: ~\/PSCyr. Akkor lépjünk be a Terminálba, és hajtsuk végre a következő parancsokat:
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.mapEzután meg kell tudnunk, hol található a helyi könyvtár texmf. Futtassuk a parancsot:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'Valószínűleg ez a könyvtár nálad — /usr/local/share/texmf/, és akkor ezt kell végrehajtanunk:
user@hostname:~$ sudo cp -R .\/PSCyr\/* \/usr\/local\/share\/texmf\/Vagy egyszerűen végrehajthatunk egy parancsot, amely a könyvtárba másolja, texmf bármilyen helyről is legyen az:
user@hostname:~$ sudo cp -R .\/PSCyr\/* $(kpsewhich -expand-var='$TEXMFLOCAL')A PSCyr betűtípusok telepítve vannak, csatlakoztassuk őket a TexLive-hoz:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsrLaTeX sablon md2pdf konvertálásához
Nem fogom leírni, hogyan van beállítva ez a sablon, csak bemutatom a spoiler alatt különösebb magyarázat nélkül. Elég annyit mondani, hogy nem rosszul van beállítva, legalábbis a forráskóddal rendelkező szövegek feldolgozása szempontjából. Ha nem vagy elégedett a behúzások méretével, a sorközökkel, a fejezetek és alfejezetek számának hiányával, akkor véleményem szerint ezt könnyen rá lehet keresni az interneten "hogyan kell Latexben csinálni..." és tovább a szükséges rész. Ha teljesen zavaros, írd meg a megjegyzésekben, próbálok mélyebben belemerülni a saját négy évvel ezelőtti beállításaimba, és elmondani, hogy melyik sor a sablonban mit csinál. Addig is azt írom le, hogyan csináltam a saját gépemen, és te szabadon ismételheted vagy módosíthatod a saját igényeid szerint.
Hozzuk létre a fájlt template.tex a könyvtárban /usr/share/texlive/:
user@hostname:~$ sudo touch \/usr\/share\/texlive\/template.texÁllítsuk be a fájl olvasási jogait:
user@hostname:~$ sudo chmod 444 \/usr\/share\/texlive\/template.texnyissuk meg gyökérként, és másoljuk bele a spoiler alatt elrejtett tartalmat:
user@hostname:~$ sudo nano \/usr\/share\/texlive\/template.texA sablon tartalma \/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}Fájl mentése /usr/share/texlive/template.tex és írjunk egy olyan skriptet, amely a Markdown fájlt PDF-be konvertálja, létrehozva ugyanabban a mappában a Markdown fájl nevét .pdf kiterjesztéssel, tehát konvertálás után filename.md a mappában megjelenik filename.md.pdf. A skriptet nevezzük el md2pdf és helyezzük el az útvonalat /usr/bin. Futtassuk le a parancsokat sorban:
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\/md2pdfA 4. sorban szereplő parancs a konvertálás. Figyeljen a —from=markdown_githubA GitHub Markdown verziója visszafelé kompatibilis az eredeti Markdown-nal, így ha a szövegeden ez van, akkor nem kell aggódnod. Ha azonban a MD fájlod valamilyen speciális Markdown dialektusban készült, akkor olvasd el a Pandoc kézikönyvét (man pandoc), győződj meg róla, hogy a te megvalósításod támogatja ezeket, és szükség esetén javítsd ki /usr/bin/md2pdf .
Script egy viszonylag automatikus telepítéshez
Ha nem akarsz sokat konfigurálni, és Ubuntu-szerű disztribúción vagy, kipróbálhatod egy olyan script létrehozását, amelynek a tartalma a spoiler alatt van elrejtve, és valószínűleg minden automatikusan települ, egyedül a fenti spoiler alatt megosztott TeX sablont kell neked átmásolni a megfelelő helyre. Nyisd meg a Terminált, és futtasd ezt:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.shEzután töltsd ki a következő tartalommal:
A script tartalma $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/md2pdfIndítsd el a következő parancs segítségével:
user@hostname:~$ sudo bash $HOME/installmd2pdf.shNe felejtsd el, hogy /usr/share/texlive/template.tex ki kell tölteni a „LaTeX sablon md2pdf konvertálásához” részben megadott tartalmat.
md2pdf használata
Egyszerűen nyisd meg a terminálban azt a mappát, ahol a Markdown fájl található (some_file.md), és futtasd a következő parancsot:
user@hostname:~$ md2pdf some_file.mdEnnek eredményeként a mappában létrejön egy fájl some_file.md.pdf.
Zárás
A leírt módszer alapján bármilyen PDF fájl stílust felépíthetsz, emellett más formátumokra is konvertálhatsz, amelyek támogatottak a Pandoc által. Remélem, hogy ez az útmutató valamilyen módon egyszer hasznos lesz 3 és fél ember számára.
Forrás: habr.com
