Predgovor
Markdown je odličan način za pisanje malog članka, a ponekad i dovoljno opsežnog teksta, s jednostavnim formatiranjem poput italic i bold. Takođe, Markdown je dobar za pisanje članaka koji uključuju izvorni kod. Ali ponekad želite bez gubitaka, bez muke pretvoriti ga u običan, dobro oblikovan PDF fajl, a da ne bude problema prilikom konvertovanja, kao što su, na primer, moji problemi - ne možete pisati na srpskom u komentarima izvornog koda, preduge linije se ne prelome, već se obrezuju i druge sitne poteškoće. Uputstvo će omogućiti brzo podešavanje konvertera. md2pdf ne previše ulazeći kako to funkcioniše. Skripta za manje-više automatsku instalaciju ispod u odgovarajućem odeljku.
Moj primer TeX šablona za konverziju koristi paket fontova PSCyr, koji uključuje podršku za Microsoft fontove, a to je Times New Roman. Takvi su zahtevi za diplomu po GOST-u. Ako znate, možete modifikovati šablon prema svojim potrebama. U mom uputstvu moraćete prvo malo da se pomučite sa podešavanjem PSCyr u TexLive. Podešavanje se vrši u distribuciji Linux Mint Mate, za druge distribucije, možda ćete morati da potražite standardne foldere paketa TexLive za vaš sistem.
Instalacija TexLive
Naravno, moguće je instalirati samo potrebne delove ovog paketa. Ali lično mi je bilo iskreno dosadno tražiti minimalno potrebnu radnu instalaciju. Da bi sve radilo kako treba, instaliramo ceo paket TexLive. Zove se texlive-full i teži nešto više od 2 gigabajta, imajte ovo na umu. Izvršite komandu:
user@hostname:~$ sudo apt install texlive-full -yNakon prilično duge instalacije možemo preći na sledeću tačku.
Instalacija konvertera Pandoc
Pandoc je paket za Linux koji omogućava pretvaranje nekih tekstualnih formata u druge. Ima mnogo zanimljivih mogućnosti, sa kojima se možete upoznati sami na internetu. Nas zanima samo mogućnost pretvaranja markdown fajla u PDF. Proverićemo da li je Pandoc instaliran i ako nije, onda ćemo ga instalirati. Na primer ovako:
user@hostname:~$ dpkg -s pandocAko u izlazu piše da nije instaliran - instaliramo:
user@hostname:~$ sudo apt install pandoc -yInstalacija paketa PSCyr za TexLive
Za početak je potrebno preuzeti PSCyr. Za sada je još uvek dostupan na ovoj , če ob branju tega članka iz kakršnega koli razloga ni dostopno, se ne obupajte, enostavno ga je mogoče najti skupaj z navodili za namestitev, če v Googlu vpišete nekaj takega kot „Namestitev PsCyr texlive“. Če je dostopno, pa je to za vas lažje, prenesite in domnevamo, da ste razpakirali arhiv v domači mapo, tako da pot do mape, ki je vsebovana v arhivu, izgleda kot ~\/PSCyr. Potem odprite Terminal in zaporedno izvedite ukaze:
user@hostname:~$ cd
user@hostname:~$ mkdir .\/PSCyr\/fonts\/map .\/PSCyr\/fonts\/enc
user@hostname:~$ cp .\/PSCyr\/dvips\/pscyr\/*.map .\/PSCyr\/fonts\/map\/\nuser@hostname:~$ cp .\/PSCyr\/dvips\/pscyr\/*.enc .\/PSCyr\/fonts\/enc\/\nuser@hostname:~$ echo "fadr6t AdvertisementPSCyr "T2AEncoding ReEncodeFont"" > .\/PSCyr\/fonts\/map\/pscyr.mapNato ugotovimo, kje se nahaja lokalni katalog texmf. Izvedemo ukaz:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'Verjetno je, da je ta katalog pri vas — /usr/local/share/texmf/, in potem izvedemo:
user@hostname:~$ sudo cp -R .\/PSCyr\/* \/usr\/local\/share\/texmf\/Lahko pa se ne mučite in izvedete ukaz, ki bo kopiral v mapo texmf kjer koli že je:
user@hostname:~$ sudo cp -R .\/PSCyr\/* $(kpsewhich -expand-var='$TEXMFLOCAL')Pisave PSCyr so nameščene, povežemo jih v TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsrLaTeX predloga za pretvorbo md2pdf
Ne bom opisoval, kako je ta predloga natančno nastavljena, temveč jo bom preprosto predstavil pod spojlerjem brez posebnih razlag. Dovolj je reči, da je nastavljena dovolj dobro, vsaj obdelava besedil z velikim številom izvorne kode. Če vas ne zadostujejo velikosti zamikov, razmiki med vrsticami, pomanjkanje številčenja poglavij in podpoglavij, potem menim, da je to dovolj enostavno poiskati na internetu s vprašanje „kako v LaTeXu narediti…“ in nato vaša potreba. Če ni povsem jasno, pišite v komentarje, poskusil bom razumeti lastne nastavitve izpred 4 let in razložiti, katera vrstica predloge za kaj odgovarja. Za zdaj pa bom opisal, kako sem to naredil na svojem računalniku, vi pa ste svobodni, da ponovite ali prilagodite zase.
Ustvarimo datoteko template.tex v imeniku /usr/share/texlive/:
user@hostname:~$ sudo touch \/usr\/share\/texlive\/template.texDoločimo ji pravice za branje:
user@hostname:~$ sudo chmod 444 \/usr\/share\/texlive\/template.texodprt pod root in vanj prilepimo vsebino, skrito pod spodnjim spojlerjem:
user@hostname:~$ sudo nano \/usr\/share\/texlive\/template.texVsebina predloge \/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}Zapisujemo datoteku /usr/share/texlive/template.tex i pišemo skriptu koja će konvertovati Markdown datoteku u PDF, stvarajući u istoj fascikli datoteku sa imenom Markdown datoteke sa sufiksom .pdf, to jest nakon konverzije filename.md u fascikli će se pojaviti filename.md.pdf. Nazvaćemo skriptu md2pdf i staviti je na put /usr/bin. Izvršićemo naredbe redom:
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\/md2pdfU 4. liniji je zapravo navedena komanda za konvertovanje. Obratite pažnju na —from=markdown_githubGitHub različica Markdown je unazad kompatibilna s originalnim Markdownom, tako da, če je vaš tekst napisan v njem, vam ni treba skrbeti. Če je vaš MD datoteka napisana v specifičnem dialektu Markdown, preberite priročnik za Pandoc (man pandoc), prepričajte se, da vaša implementacija to podpira, in jo po potrebi prilagodite. /usr/bin/md2pdf при необходимости.
Skripta za bolj ali manj avtomatično namestitev
Če vam ni preveč do nastavljanja, in imate distribucijo podobno Ubuntuju, lahko poskusite ustvariti skripto s vsebino, skrito pod spoilerjem, in verjetno se bo vse namestilo samo; edino, TeX predloga, objavljena pod zgornjim spoilerjem, jo boste morali sami skopirati na pravo mesto. Odprite Terminal in izvedite:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.shNato jo napolnite z naslednjo vsebino:
Vsebina skripte $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/md2pdfZaženite jo z ukazom:
user@hostname:~$ sudo bash $HOME/installmd2pdf.shNe pozabite, da /usr/share/texlive/template.tex morate napolniti z vsebino, navedeno v razdelku "LaTeX predloga za pretvorbo md2pdf".
Uporaba md2pdf
Preprosto odprite mapo z Markdown datoteko (some_file.md) v Terminalu in izvedite ukaz:
user@hostname:~$ md2pdf some_file.mdKot rezultat bo v mapi nastala datoteka some_file.md.pdf.
Zaključek
Na osnovi opisanega metoda lahko ustvarite katerikoli stil PDF datotek, prav tako lahko pretvarjate namesto md druge formate, vse, ki jih podpira Pandoc. Upam, da bo enkrat ta navodila koristila 3 in pol ljudem.
Izvor: habr.com
