Predgovor
Markdown je sjajan način za pisanje kratkog članka, a ponekad i dovoljno opsežnog teksta, s jednostavnim formatiranjem u obliku kurziva i podebljanog teksta. Također, Markdown je dobar za pisanje članaka s uključivanjem izvornog koda. No, ponekad želite pretvoriti ga u običan, dobro oblikovani PDF bez gubitaka i komplikacija prilikom konverzije, poput onih s kojima sam se susretao — ne možete pisati na ruskom u komentarima izvornog koda, premdu duge retke se ne prebacuju, već se preseku i druge sitne probleme. Ova uputa će vam omogućiti brzo postavljanje konvertera md2pdf ne ulazeći previše u to kako to funkcionira. Skripta za više manje automatsku instalaciju dolje u odgovarajućem odjeljku.
Moj primjer TeX predloška za konverziju koristi paket fontova PSCyr, koji uključuje podršku za Microsoft fontove, a to su Times New Roman. Takvi su bili zahtjevi za diplomu prema GOST-u. Ako znate, možete modificirati predložak prema svojim potrebama. U mojoj uputi, međutim, potrebno je prvo malo se malo pomučiti s postavkama PSCyr u TexLive. Postavke se vrše u distribuciji Linux Mint Mate, za druge distribucije, možda ćete morati potražiti standardne mape paketa TexLive za vaš sustav.
Instalacija TexLive
Naravno, možete instalirati samo potrebne dijelove ovog paketa. No, osobno mi je bilo iskreno lijeno tražiti minimalno potrebnu radnu instalaciju. Da bi sve točno radilo, instaliramo cijeli paket TexLive. Zove se texlive-full i težak je nešto više od 2 gigabajta, imajte to na umu. Izvršite sljedeću naredbu:
user@hostname:~$ sudo apt install texlive-full -yNakon dovoljno dugog instaliranja, možemo preći na sljedeću točku.
Instalacija konvertera Pandoc
Pandoc je Linux paket koji omogućava pretvaranje nekih tekstualnih formata u druge. Ima mnogo zanimljivih mogućnosti, s kojima se možete sami upoznati na internetu. Nas zanima samo mogućnost pretvaranja markdown datoteke u PDF. Provjerimo je li Pandoc instaliran i ako nije, instaliramo ga. Na primjer ovako:
user@hostname:~$ dpkg -s pandocAko u ispisu piše da nije instaliran — instaliramo:
user@hostname:~$ sudo apt install pandoc -yInstalacija paketa PSCyr za TexLive
Za početak trebate preuzeti PSCyr. Za sada je još uvijek dostupan na ovoj , ako u trenutku čitanja članka nije dostupna iz bilo kojeg razloga, nemojte očajavati, lako ju je pronaći zajedno s uputama za instalaciju, upisivanjem u Google nešto poput „Instalacija PsCyr texlive“. Ako je dostupna, onda vam je lakše, preuzmite ju i pretpostavimo da ste raspakirali arhivu u svoj domaći folder, pa tako putanja do foldera unutar arhive izgleda kao ~/PSCyr. Tada otvaramo Terminal i redom izvršavamo komande:
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.mapDalje saznajemo gdje se nalazi lokalni direktorij texmf. Izvršavamo komandu:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'Vjerojatno je taj direktorij kod vas — /usr/local/share/texmf/, pa onda izvršavamo:
user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/Ili jednostavno možemo izvršiti komandu koja će kopirati u folder texmf gdje god da se nalazio:
user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')Fontovi PSCyr su instalirani, povezujući u TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsrLaTeX predložak za konverziju md2pdf
Neću opisivati kako je ovaj predložak podešen, jednostavno ću ga navesti ispod spoiler-a bez dodatnih objašnjenja. Dovoljno je reći da je dobro podešen, barem kako obrađuje tekstove s puno izvorne koda. Ako niste zadovoljni veličinama usta, međurednim razmacima, nedostatkom numeracije poglavlja i podpoglavlja, mislim da je to lako pronaći pitanjem na internetu „kako u Latex napraviti…“, a onda vaša potreba. Ako vam nije jasno, pišite u komentarima, pokušat ću se prisjetiti vlastitih podešavanja prije 4 godine i objasniti koja linija predloška za što odgovara. U međuvremenu, opisat ću kako sam to napravio na svom računalu, a vi ste slobodni ponoviti ili modificirati to za sebe.
Kreiramo datoteku template.tex u direktoriju /usr/share/texlive/:
user@hostname:~$ sudo touch /usr/share/texlive/template.texPostavljamo mu prava na čitanje:
user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.texotvaramo kao root i umetnemo u njega sadržaj skriven ispod spoiler-a dolje:
user@hostname:~$ sudo nano /usr/share/texlive/template.texSadržaj predloška /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}Spremamo datoteku /usr/share/texlive/template.tex i pišemo skript koji će konvertirati Markdown datoteku u PDF, stvarajući u istoj mapi datoteku s nazivom Markdown datoteke s dodatkom .pdf, odnosno nakon konverzije filename.md u mapi će se pojaviti filename.md.pdf. Skript ćemo nazvati md2pdf i staviti ga na put /usr/bin. Izvršit ćemo redom sljedeće naredbe:
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. retku naznačena je naredba za konverziju. Obratite pozornost na —from=markdown_github. GitHub verzija Markdawn-a je unazad kompatibilna s originalnim Markdawn-om, tako da se ne trebate brinuti ako je vaš tekst napisan na njemu. Ako je vaš MD datoteka napisana na specifičnom dijalektu Markdawn-a, provjerite priručnik za Pandoc (man pandoc), uvjerite se da vaša implementacija podržava to, i ispravite /usr/bin/md2pdf ako je potrebno.
Skripta za više-manje automatsku instalaciju
Ako ne želite previše podešavati, a imate Ubuntu-sličnu distribuciju, možete pokušati stvoriti skriptu s sadržajem skrivenim pod sponom, i vjerojatno će se sve instalirati samo, jedino, TeX predložak, postavljen pod sponom iznad, kopirate gdje treba sami. Otvorite Terminal i izvršite:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.shZatim ga ispunite ovim sadržajem:
Sadržaj 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/md2pdfPokrenite ga pomoću naredbe:
user@hostname:~$ sudo bash $HOME/installmd2pdf.shNe zaboravite da /usr/share/texlive/template.tex morate ispuniti sadržajem navedenim u odjeljku „LaTeX predložak za konverziju md2pdf”.
Korištenje md2pdf
Jednostavno otvorite mapu s Markdown datotekom (some_file.md) u Terminals, i izvršite naredbu:
user@hostname:~$ md2pdf some_file.mdKao rezultat, u mapi će se pojaviti datoteka some_file.md.pdf.
Zaključak
Na temelju opisane metode može se izgraditi bilo koji stil PDF datoteka, također se mogu konvertirati umjesto md drugi formati, svi podržani od strane Pandoc-a. Nadam se da će ova uputstva jednom zatrebati 3 i pol osobama.
Izvor: habr.com
