Ievads
Markdown ir lielisks veids, kā uzrakstīt nelielu rakstu, bet dažreiz arī pietiekami plašu tekstu ar vienkāršu formatējumu, piemēram, kursīvs un treknraksts. Arī Markdown ir noderīgs rakstu rakstīšanai ar iekļautu avota kodu. Taču dažreiz ir vēlme bez zaudējumiem un sarežģījumiem pārvērst to par parastu, labi noformētu PDF failu, un lai konvertēšanas procesā nebūtu problēmu, piemēram, kā man bija — nevar rakstīt krieviski avota koda komentāros, pārāk garas rindas netiek pārvietotas, bet tiek apgrieztas, un citu sīkumu. Šī instrukcija ļaus ātri konfigurēt konvertētāju. md2pdf nepārāk iedziļinoties, kā tas darbojas. Skripts priekš pusautomātiskas instalācijas ir zemāk attiecīgajā sadaļā.
Mans TeX veidne konvertēšanai izmanto PSCyr fontu paketi, kas ietver atbalstu Microsoft fontiem, proti, Times New Roman. Šādi bija prasības diplomam saskaņā ar GOST. Ja protat, varat pielāgot veidni savām vajadzībām. Manā instrukcijā priekš tam pirms tam būs jānodarbojas ar PSCyr konfigurāciju TexLive. Konfigurācija tiek veikta Linux Mint Mate izplatījumā; citiem izplatījumiem, iespējams, būs jāpameklē TexLive paketes standarta mapes jūsu sistēmai.
TexLive instalācija
Protams, var instalēt tikai nepieciešamās daļas no šī paketes. Bet personīgi man bija slinkums meklēt minimāli nepieciešamo darba instalāciju. Lai viss darbotos, instalējam visu TexLive paketi. Tas tiek saukts par texlive-full un sver nedaudz vairāk par 2 gigabaitiem, ņemiet vērā šo faktu. Izpildām komandu:
user@hostname:~$ sudo apt install texlive-full -yPēc diezgan ilgas instalācijas varam pāriet pie nākamā punkta.
Pandoc konvertētāja instalācija
Pandoc ir Linux pakete, kas ļauj pārvērst dažus teksta formātus citos. Tajā ir daudz interesantu iespēju, ar kurām varat iepazīties paši internetā. Mūs interesē tikai iespēja konvertēt markdown failu uz PDF. Pārbaudīsim, vai Pandoc ir uzstādīts, un, ja nav, tad to instalēsim. Piemēram, tā:
user@hostname:~$ dpkg -s pandocJa izejā ir norādīts, ka nav uzstādīts — uzstādam:
user@hostname:~$ sudo apt install pandoc -yPSCyr paketes instalācija TexLive
Vispirms jānokāpj PSCyr. Pašlaik tas vēl ir pieejams šeit. , ja, ja izlasīšanas brīdī raksts ir kaut kādu iemeslu dēļ nepieejams, neizmisiet, to nav grūti atrast kopā ar instalācijas instrukcijām, ierakstot Google kaut ko līdzīgu «PsCyr texlive uzstādīšana». Ja tas ir pieejams, tad jums ir vieglāk, lejupielādējiet un pieņemsim, ka jūs esat izsaiņojis arhīvu mājas mapē un tādējādi ceļš uz mapi, kas satur arhīvā, izskatās kā ~\/PSCyr. Tālāk mēs ieejam Terminālī un secīgi izpildām komandas:
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.mapPēc tam noskaidrosim, kur atrodas lokālā mape texmf. Izpildām komandu:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'Visticamāk, šī mape jums ir — /usr/local/share/texmf/, un tad mēs izpildām:
user@hostname:~$ sudo cp -R .\/PSCyr\/* \/usr\/local\/share\/texmf\/Nu vai arī varat neuztraukties un izpildīt komandu, kas kopēs uz mapi texmf kur tā nebūtu:
user@hostname:~$ sudo cp -R .\/PSCyr\/* $(kpsewhich -expand-var='$TEXMFLOCAL')PSCyr fonti ir uzstādīti, pievienojam TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsrLaTeX veidne md2pdf konvertēšanai
Es nenorakstīšu, kā tieši šī veidne ir iestatīta, un vienkārši to sniegšu zem spoileriem bez īpašām paskaidrojumiem. Pietiek teikt, ka tā tika iestatīta diezgan labi, vismaz tā kā tā apstrādā tekstus ar daudzām sākotnējām kodiem. Ja jūs neapmierina atkāpes izmēri, starp rindkopu intervāli, sadaļu un apakšsadaļu numurēšanas trūkums, tad, manuprāt, to ir pietiekami viegli meklēt, meklējot internetā ar jautājumu «kā Latex izdarīt…» un tālāk jūsu nepieciešamība. Ja vispār nesaprotat, rakstiet komentāros, es cenšos saprast savas 4 gadus senās iestatījumu un izskaidrot, kura rinda veidnē par ko atbild. Bet pagaidām es izklāstīšu, kā es to izdarīju savā datorā, un jūs varat atkārtot vai modificēt pēc saviem ieskatiem.
Izveidojam failu template.tex mapē /usr/share/texlive/:
user@hostname:~$ sudo touch \/usr\/share\/texlive\/template.texPiešķiram tam lasīšanas tiesības:
user@hostname:~$ sudo chmod 444 \/usr\/share\/texlive\/template.texatveram ar root tiesībām un ieliekam tajā saturu, kas paslēpts zem spoileriem zemāk:
user@hostname:~$ sudo nano \/usr\/share\/texlive\/template.texVeidnes saturs \/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}Saglabājam failu /usr/share/texlive/template.tex un uzrakstām skriptu, kas pārvērš Markdown failu PDF formātā, izveidojot tajā pašā mapē failu ar Markdown faila nosaukumu un .pdf paplašinājumu, tātad pēc pārvēršanas filename.md mapē parādīsies filename.md.pdf. Skriptu nosauksim md2pdf un novietosim pa ceļam /usr/bin. Veiksim secīgi šādas komandas:
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\/md2pdfCeturtajā rindā ir sniegta pārvēršanas komanda. Pievērsiet uzmanību —from=markdown_github. GitHub Markdown versija ir atpakaļsavienojama ar oriģinālo Markdown, tādēļ, ja jūsu teksts ir rakstīts tajā, varat neuztraukties. Ja jūsu MD fails ir rakstīts specifiskā Markdown dialektā, izlasiet rokasgrāmatu par Pandoc (man pandoc), pārliecinieties, ka jūsu realizācija to atbalsta, un labojiet /usr/bin/md2pdf ja nepieciešams.
Skripts, lai nedaudz automatizētu instalāciju
Ja nevēlaties vispār neko konfigurēt un jums ir Ubuntu līdzīgs izplatījums, varat izmēģināt izveidot skriptu ar saturu, kas paslēpts zem spoiler, un, visticamāk, viss instalēsies pats. Vienīgi TeX veidnes, kas izliktas zem spoiler, jums pašiem būs jākopē kur nepieciešams. Atveriet termināli un izpildiet:
lietotājs@hostname:~$ cd
lietotājs@hostname:~$ touch installmd2pdf.shTālāk aizpildiet to ar šādu saturu:
Skripta saturs $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/md2pdfPalaidiet to ar komandu:
lietotājs@hostname:~$ sudo bash $HOME/installmd2pdf.shNeaizmirstiet, ka /usr/share/texlive/template.tex jums jāaizpilda norādītajā sadaļā “LaTeX veidne md2pdf konvertēšanai” saturs.
Izmantošana md2pdf
Vienkārši atveriet mapi ar Markdown failu (some_file.md) terminālī un izpildiet komandu:
lietotājs@hostname:~$ md2pdf some_file.mdKā rezultātā mapē parādīsies fails some_file.md.pdf.
Secinājums
Uz šī aprakstītā metode var veidot jebkura veida PDF failus, arī var konvertēt citus formātus, jebkurus, ko atbalsta Pandoc. Ceru, ka kādā dienā šī instrukcija noderēs 3,5 cilvēkiem.
Avots: habr.com
