Predgovor
Markdown je odličen način za pisanje kratkega članka in včasih kar veliko besedila s preprostim poševnim in krepkim oblikovanjem. Markdown je dober tudi za pisanje člankov z vključeno izvorno kodo. Včasih pa hočeš brez izgube, zaplesati s tamburino, da jo prehiti v navadno, dobro oblikovano datoteko PDF in da ne bo težav pri pretvorbi, kar sem imel na primer jaz - v ruščini ne moreš pisati komentarji izvorne kode, predolge vrstice niso prenesene, ampak odrezane in druge manjše težave. Navodilo vam bo omogočilo hitro nastavitev pretvornika md2pdf ne da bi zares razumel, kako deluje. Skript za bolj ali manj samodejno namestitev je spodaj v ustreznem razdelku.
Moja vzorčna predloga TeX za pretvorbo uporablja paket pisav PSCyr, ki vključuje podporo za Microsoftove pisave, in sicer Times New Roman. Takšne zahteve so bile za diplomo po GOST. Če veste kako, lahko predlogo spremenite tako, da ustreza vašim potrebam. V mojih navodilih se boste morali najprej poigrati z nastavitvijo PSCyr v TexLive. Nastavitev se izvede v distribuciji Linux Mint Mate, za druge distribucije boste morda morali v Googlu poiskati standardne mape paketov TexLive za vaš sistem.
Namestitev TexLive
Seveda lahko namestite samo potrebne dele tega paketa. Toda osebno sem bil odkrito prelen, da bi iskal minimalno potrebno delujočo namestitev. Če želite zagotoviti, da vse deluje, namestite celoten paket TexLive. Se imenuje texlive-poln in tehta nekaj več kot 2 gigabajta, imejte to dejstvo v mislih. Izvedemo ukaz:
user@hostname:~$ sudo apt install texlive-full -y
Po dovolj dolgi namestitvi lahko nadaljujete z naslednjim elementom.
Namestitev pretvornika Pandoc
Pandoc je paket za Linux, ki omogoča pretvorbo nekaterih formatov besedila v druge. Ima veliko zanimivih funkcij, ki jih lahko najdete sami na internetu. Zanima nas le možnost pretvorbe markdown datoteke v PDF. Preverite, ali je Pandoc nameščen in če ni, ga namestite. Na primer takole:
user@hostname:~$ dpkg -s pandoc
Če izhod pravi, da ni nameščen, namestite:
user@hostname:~$ sudo apt install pandoc -y
Namestitev paketa PSCyr za TexLive
Najprej morate prenesti PSCyr. Zaenkrat je še na voljo pri tem
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
Nato ugotovite, kje se nahaja lokalni imenik texmf. Izvedemo ukaz:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'
Najverjetneje imate ta imenik - /usr/local/share/texmf/, nato pa naredimo:
user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/
No, ali pa se ne morete truditi in zagnati ukaza, ki bo kopiral v mapo texmf kjerkoli že je:
user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')
Pisave PSCyr nameščene, povežite se s TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsr
Predloga LaTeX za pretvorbo md2pdf
Ne bom natančno opisal, kako je ta predloga konfigurirana, in jo bom preprosto podal pod spojler brez posebne razlage. Dovolj je reči, da je dobro konfiguriran, vsaj glede tega, kako obravnava besedila z veliko izvorne kode. Če niste zadovoljni z velikostjo alinej, razmikom med vrsticami, pomanjkanjem oštevilčevanja razdelkov in pododdelkov, potem je po mojem mnenju zelo enostavno poguglati vprašanje na internetu "kako to narediti v Lateksu ..." in potem tvoja potreba. Če sploh ni jasno, napišite v komentarje, poskusil se bom poglobiti v svoje nastavitve pred 4 leti in opisati, katera vrstica predloge je odgovorna za kaj. V tem času bom zapisal, kako sem to naredil na svojem računalniku, vi pa lahko ponovite ali spremenite sami.
Ustvarite datoteko template.tex v katalogu /usr/share/texlive/:
user@hostname:~$ sudo touch /usr/share/texlive/template.tex
Dajte mu dovoljenja za branje:
user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.tex
odprite ga pod root in vanj prilepite vsebino, skrito pod spodnjim spojlerjem:
user@hostname:~$ sudo nano /usr/share/texlive/template.tex
Vsebina 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}
Shranite datoteko /usr/share/texlive/template.tex in napišite skript, ki bo pretvoril datoteko Makrdown v PDF, pri čemer bo v isti mapi ustvaril datoteko, imenovano datoteka Markdown s predpono .pdf, to je po pretvorbi ime datoteke.md se prikaže v mapi. ime datoteke.md.pdf. Pokličimo scenarij md2pdf in dal na pot / usr / bin. Izvajajmo ukaze v zaporedju:
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
Četrta vrstica dejansko vsebuje ukaz za pretvorbo. Bodi pozoren na --from=markdown_github. GitHubova različica Markdown je nazaj združljiva z originalnim Markdownom, tako da vam ni treba skrbeti, če je vaše besedilo napisano v njej. Če je vaša datoteka MD napisana v določenem narečju Markdown, preberite priročnik Pandoc (man pandoc
), se prepričajte, da vašo izvedbo podpira, in prilagodite /usr/bin/md2pdf če je potrebno.
Skripta za bolj ali manj samodejno namestitev
Če res ne želite ničesar konfigurirati in imate Ubuntu podobno distribucijo, lahko poskusite ustvariti skript z vsebino skrito pod spojlerjem in najverjetneje se bo vse namestilo samo od sebe, edina stvar je, kopirajte predlogo TeX, objavljeno pod zgornjim spojlerjem, kjer je to potrebno. Odprite terminal in zaženite:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.sh
Nato ga napolnite z naslednjo vsebino:
Vsebina skripta $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/md2pdf
Zaženite ga z ukazom:
user@hostname:~$ sudo bash $HOME/installmd2pdf.sh
Ne pozabite na to /usr/share/texlive/template.tex je treba izpolniti, kot je navedeno v razdelku "Predloga LaTeX za pretvorbo md2pdf»vsebina.
Uporaba md2pdf
Samo odprite mapo z datoteko Markdown (nekaj_datoteke.md) v terminalu in zaženite ukaz:
user@hostname:~$ md2pdf some_file.md
Posledično se bo v mapi pojavila datoteka nekaj_datoteke.md.pdf.
Zaključek
Na podlagi opisane metode lahko sestavite poljuben slog datotek PDF, namesto md lahko pretvorite tudi druge formate, katere podpira Pandoc. Upam si upati, da bo nekoč to navodilo koristilo 3 osebam in pol.
Vir: www.habr.com