Kész markdown2pdf megoldás forráskóddal Linuxhoz

Előszó

A Markdown nagyszerű módja annak, hogy rövid cikkeket írjon, és néha meglehetősen sok szöveget is írjon, egyszerű dőlt és félkövér formázással. A Markdown a forráskóddal ellátott cikkek írásához is jó. De néha veszteség nélkül akarsz táncolni egy tamburával, hogy egy szabályos, jól formázott PDF-fájlba kerüljön, és hogy ne legyen olyan probléma az átalakítás során, ami például nekem volt - nem lehet oroszul írni a forráskód megjegyzései, a túl hosszú sorok nem kerülnek át, hanem vágás és egyéb kisebb problémák. Az utasítás lehetővé teszi az átalakító gyors beállítását md2pdf anélkül, hogy igazán értené a működését. A többé-kevésbé automatikus telepítés szkriptje lent, a megfelelő részben található.

A konvertáláshoz használt TeX mintasablonom a PSCyr betűtípuscsomagot használja, amely tartalmazza a Microsoft betűtípusok támogatását, nevezetesen Times New Roman. A GOST szerint ilyen követelmények voltak a diplomához. Ha tudja, hogyan, módosíthatja a sablont igényeinek megfelelően. Saját utasításaim szerint először a TexLive PSCyr beállításával kell bolondoznia. A beállítás a Linux Mint Mate disztribúcióban történik, más disztribúciók esetén előfordulhat, hogy a Google rendszeréhez tartozó szabványos TexLive csomagmappákat kell keresnie.

A TexLive telepítése

Természetesen ennek a csomagnak csak a szükséges részeit telepítheti. De személy szerint őszintén szólva lusta voltam ahhoz, hogy a minimálisan szükséges működő telepítést keressem. Annak érdekében, hogy minden működjön, telepítse a teljes TexLive csomagot. Ez az úgynevezett texlive-full és valamivel több, mint 2 gigabájt, ne feledje ezt a tényt. Végrehajtjuk a parancsot:

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

Kellően hosszú telepítés után folytathatja a következő elemet.

A Pandoc Converter telepítése

A Pandoc egy Linux-csomag, amely lehetővé teszi bizonyos szövegformátumok konvertálását másokra. Nagyon sok érdekes funkcióval rendelkezik, amelyeket az interneten találhat. Minket csak a leértékelési fájl PDF formátumba konvertálásának lehetősége érdekel. Ellenőrizze, hogy a Pandoc telepítve van-e, és ha nem, telepítse. Például így:

user@hostname:~$ dpkg -s pandoc

Ha a kimenet azt mondja, hogy nincs telepítve, telepítse:

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

A PSCyr csomag telepítése a TexLive számára

Először le kell töltened a PSCyr-t. Egyelőre még elérhető ezen a helyen link, ha a cikk olvasásakor valamilyen okból nem érhető el, ne essen kétségbe, könnyen megtalálhatja a telepítési utasításokkal együtt, ha valami olyasmit ír be a Google-ba, hogy „Installing PsCyr texlive”. Ha elérhető, akkor egyszerűbb, töltse le, és feltételezzük, hogy kicsomagolta az archívumot a saját mappájába, így az archívumban lévő mappa elérési útja így néz ki ~/PSCyr. Ezután lépjen a terminálra, és sorban hajtsa 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.map

Ezután nézze meg, hol található a helyi címtár texmf. Végrehajtjuk a parancsot:

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

Valószínűleg megvan ez a könyvtár - /usr/local/share/texmf/, majd ezt tesszük:

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

Nos, vagy nem zavarja, és futtasson egy parancsot, amely egy mappába másol texmf bárhol is van:

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

PSCyr betűtípusok telepítve, csatlakozzon a TexLive-hoz:

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

LaTeX sablon md2pdf konvertáláshoz

Nem írom le pontosan, hogy ez a sablon hogyan van konfigurálva, és egyszerűen megadom a spoiler alatt, különösebb magyarázat nélkül. Elég, ha azt mondjuk, hogy jól van konfigurálva, legalábbis abból a szempontból, hogy hogyan kezeli a sok forráskódot tartalmazó szövegeket. Ha nem elégedett a behúzások nagyságával, a sorközökkel, a szakaszok és alfejezetek számozásának hiányával, akkor véleményem szerint elég könnyű rákeresni a google-ban az interneten a "hogyan kell Latexben ..." kérdést, ill. akkor a szükséged. Ha egyáltalán nem tiszta, írd meg kommentben, megpróbálok beleásni a saját 4 évvel ezelőtti beállításaimba, és leírom, hogy a sablon melyik sora miért felelős. Addig is leírom, hogyan csináltam PC-n, és szabadon megismételheti vagy módosíthatja.

Hozzon létre egy fájlt sablon.tex a katalógusban /usr/share/texlive/:

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

Adj olvasási engedélyt:

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

nyissa meg a gyökér alatt, és illessze be a lenti spoiler alatt rejtett tartalmat:

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

Sablontartalom /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}

A fájl mentése /usr/share/texlive/template.tex és írjon egy szkriptet, amely a Makrdown fájlt PDF-be konvertálja, és ugyanabban a mappában hoz létre egy Markdown fájl nevű fájlt .pdf előtaggal, vagyis a konvertálás után fájlnév.md megjelenik a mappában. fájlnév.md.pdf. Nevezzük a forgatókönyvet md2pdf és útba ejtjük / usr / bin. Végrehajtjuk 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/md2pdf

A 4. sor valójában a konvertáló parancsot tartalmazza. figyelni --from=markdown_github. A Markdown GitHub verziója visszafelé kompatibilis az eredeti Markdownnal, így ha a szöveged bele van írva, akkor nem kell aggódnod. Ha az MD fájl egy adott Markdown dialektusban van írva, akkor olvassa el a Pandoc kézikönyvet (man pandoc), győződjön meg arról, hogy a megvalósítást támogatja, és módosítsa /usr/bin/md2pdf ha szükséges.

Szkript többé-kevésbé automatikus telepítéshez

Ha nem igazán akarsz konfigurálni semmit, és Ubuntu-szerű disztribúciód van, akkor megpróbálhatsz egy szkriptet létrehozni a spoiler alatt elrejtett tartalommal, és nagy valószínűséggel minden magától telepítődik, csak másolj a fenti spoiler alatt közzétett TeX sablont oda, ahol szükséged van rájuk. Nyissa meg a terminált, és futtassa:

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

Ezután töltse ki a következő tartalommal:

A $HOME/installmd2pdf.sh szkript tartalma

#!/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

Futtassa a következő paranccsal:

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

Ne felejtsd el azt /usr/share/texlive/template.tex pontban jelzett módon kell kitölteniLaTeX sablon md2pdf konvertáláshoz" tartalom.

md2pdf használatával

Csak nyissa meg a mappát a Markdown fájllal (some_file.md) a terminálban, és futtassa a parancsot:

user@hostname:~$ md2pdf some_file.md

Ennek eredményeként egy fájl jelenik meg a mappában some_file.md.pdf.

Következtetés

A leírt módszer alapján tetszőleges stílusú PDF fájlokat készíthet, de az md helyett más, a Pandoc által támogatott formátumot is konvertálhat. Merem remélni, hogy egyszer ez az utasítás 3 és fél ember számára hasznos lesz.

Forrás: will.com

Hozzászólás