Parathënie
Markdown është një mënyrë e shkëlqyer për të shkruar një artikull të vogël, dhe ndonjëherë edhe një tekst të mjaftueshëm të gjatë, me formatim të thjeshtë si shkallë të trashë dhe të theksuar. Gjithashtu, Markdown është mirë për të shkruar artikuj që përfshijnë kodin burimor. Por ndonjëherë dëshiron ta konvertosh atë në një skedar PDF të zakonshëm dhe të mirëorganizuar, pa humbje dhe probleme gjatë konvertimit, siç më ndodhi mua — nuk mund të shkruaja në rusisht në komentet e kodit burimor, rreshtat shumë të gjatë nuk ndahen dhe disa çështje të vogla. Ky udhëzues do të lejojë konfigurimin e shpejtë të konvertuesit md2pdf pa u thelluar shumë në si funksionon kjo. Skripti për një instalim më të automatizuar është më poshtë në seksionin përkatës.
Shembulli im i modelit TeX për konvertim përdor paketën e shkronjave PSCyr, e cila përfshin mbështetje për shkronjat Microsoft, pikërisht Times New Roman. Këto janë kërkesa për diplomën sipas GOST-it. Nëse e keni aftësinë, mund ta modifikoni modelin për nevojat tuaja. Në udhëzimin tim, do të duhet të merremi më pare me konfigurimin e PSCyr në TexLive. Konfigurimi bëhet në distribuimin e Linux Mint Mate, për distribuime të tjera, ndoshta do të duhet të kërkoni standardet për paketën TexLive për sistemin tuaj.
Instalimi i TexLive
Natyrisht, mund të instalohet vetëm pjesa e nevojshme e këtij paketi. Por personalisht, isha sinqerisht dembel për të kërkuar instalimin minimal që funksionon. Që gjithçka të funksionojë pa probleme, instaloni të gjithë paketën TexLive. Quhet texlive-full dhe peshon pak më shumë se 2 gigabajt, mbani këtë fakt në mend. Kryej komandën:
user@hostname:~$ sudo apt install texlive-full -yPas një instalimi të gjatë, mund të kaloni në pikën e ardhshme.
Instalimi i konvertuesit Pandoc
Pandoc është një paketë Linux që lejon të konvertohen disa formate teksti në të tjera. Ka shumë mundësi interesante, të cilat mund t'i eksploroni vetë në internet. Ajo që na intereson është vetëm mundësia e konvertimit të skedarëve markdown në PDF. Le të kontrollojmë nëse Pandoc është instaluar dhe nëse jo, do ta instalojmë. Për shembull:
user@hostname:~$ dpkg -s pandocNëse rezultati tregon se nuk është instaluar — ta instalojmë:
user@hostname:~$ sudo apt install pandoc -yInstalimi i paketës PSCyr për TexLive
Së pari, duhet të shkarkoni PSCyr. Akoma është në dispozicion për këtë , nëse në momentin e leximit të artikullit ajo për disa arsye nuk është e qasshme, mos u dëshpëroni, nuk është e vështirë ta gjeni së bashku me udhëzimin për instalimin, duke shkruar në Google diçka të tillë si "Instalimi i PsCyr texlive". Nëse është e qasshme, atëherë ju është më e lehtë, shkarkoni dhe le të presim që e keni shkarkuar arkivin në dosjen tuaj të shtëpisë dhe kështu rruga drejt dosjes, që ndodhet në arkiv, duket si ~\/PSCyr. Atëherë shkojmë në Terminal dhe kryejmë komandat një pas një:
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ër më tej, të kuptojmë se ku ndodhet katalogu lokal texmf. Kryejmë komandën:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'Shumë mundësish, ky katalog është /usr/local/share/texmf/, dhe atëherë ne kryejmë:
user@hostname:~$ sudo cp -R .\/PSCyr\/* \/usr\/local\/share\/texmf\/Ose mund të mos lodheni dhe të kryeni komandën që do ta kopjojë në dosjen texmf ku do që të jetë ajo:
user@hostname:~$ sudo cp -R .\/PSCyr\/* $(kpsewhich -expand-var='$TEXMFLOCAL')Shenjat PSCyr janë instaluar, i lidhim në TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsrLaTeX shabllon për konvertimin md2pdf
Nuk do të përshkruaj se si është konfiguruar ky shabllon, dhe thjesht do ta sjell atë nën një spoiler pa shumë shpjegime. Mjafton të themi se është konfiguruar mjaft mirë, të paktën për sa i përket mënyrës si përpunon tekstet me shumë kod burimi. Nëse nuk jeni të kënaqur me dimensionet e hapësirave, intervalet ndërmjet rreshtave, mungesën e numrave të kapitujve dhe nënkapitujve, unë mendoj se është mjaft e lehtë ta gjejmë këtë duke e kërkuar në internet "si të bëjmë…" dhe më pas nevojën tuaj. Nëse është krejtësisht e paqartë, shkruani në komentet dhe do të përpiqem të kuptoj konfigurimet e mia katër vjeçare dhe të shpjegoj se cila rresht shablloni për çfarë përgjigjet. Deri atëherë, do të përshkruaj si kam bërë unë në PC-në time, dhe ju jeni të lirë ta përsërisni ose ta modifikoni për veten tuaj.
Krijojmë skedarin template.tex në katalogun /usr/share/texlive/:
user@hostname:~$ sudo touch \/usr\/share\/texlive\/template.texI caktojmë atij të drejtat për lexim:
user@hostname:~$ sudo chmod 444 \/usr\/share\/texlive\/template.texe hapim si root dhe e vendosim në të përmbajtjen e fshehur nën spoilerin më poshtë:
user@hostname:~$ sudo nano \/usr\/share\/texlive\/template.texPërmbajtja e shabllonit \/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}Ruajmë skedarin /usr/share/texlive/template.tex dhe shkruajmë një skript që do të konvertojë skedarin Makrdown në PDF, duke krijuar në të njëjtin dosje një skedë me emrin e skedarit Markdown me përfundimin .pdf, do thotë pas konvertimit filename.md në dosje do të shfaqet filename.md.pdf. Skripti do ta quajmë md2pdf dhe do ta vendosim në rrugë /usr/bin. Do të ekzekutojmë rregullisht komandat:
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\/md2pdfNë linjën e 4-t, në fakt është dhënë komanda e konvertimit. Vini re se —from=markdown_github. GitHub version of Markdown is backward compatible with the original Markdown, so if your text is written in it, you don't need to worry. However, if your MD file is written in a specific dialect of Markdown, you should read the Pandoc manual (man pandoc), make sure your implementation supports it, and adjust /usr/bin/md2pdf if necessary.
Script for a more or less automatic installation
If you don't want to configure anything at all, and you have an Ubuntu-like distribution, you can try creating a script with the content hidden in the spoiler, and most likely everything will install itself; the only thing you will need to do is copy the TeX template shared in the spoiler above to the required location. Open the Terminal and execute:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.shNext, fill it with the following content:
Content of the script $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/md2pdfRun it with the command:
user@hostname:~$ sudo bash $HOME/installmd2pdf.shDon't forget that /usr/share/texlive/template.tex you need to fill it with content specified in the section "LaTeX shabllon për konvertimin md2pdf".
Using md2pdf
Just open the folder with the Markdown file (some_file.md) in the Terminal, and execute the command:
user@hostname:~$ md2pdf some_file.mdAs a result, a file will appear in the folder some_file.md.pdf.
Përfundim
Based on the described method, you can create any style of PDF files; you can also convert formats other than md, any supported by Pandoc. I hope that one day this instruction will be useful for three and a half people.
Burimi: habr.com
