Zgjidhje e gatshme markdown2pdf me kod burim për Linux

Parathënie libri

Markdown është një mënyrë e shkëlqyer për të shkruar një artikull të shkurtër, dhe nganjëherë mjaft tekst, me formatim të thjeshtë të pjerrët dhe të theksuar. Markdown është gjithashtu i mirë për të shkruar artikuj me kodin burimor të përfshirë. Por ndonjëherë ju dëshironi të kërceni pa humbje, të kërceni me një dajre për ta kapërcyer atë në një skedar PDF të rregullt, të formuar mirë, dhe në mënyrë që të mos ketë probleme gjatë konvertimit, të cilat, për shembull, i kisha - nuk mund të shkruani në rusisht në komentet e kodit burimor, rreshtat shumë të gjata nuk transferohen, por prehen dhe probleme të tjera të vogla. Udhëzimi do t'ju lejojë të konfiguroni shpejt konvertuesin md2pdf pa e kuptuar me të vërtetë se si funksionon. Skripti për një instalim pak a shumë automatik është më poshtë në seksionin përkatës.

Modeli im i mostrës TeX për konvertim përdor paketën e shkronjave PSCyr, e cila përfshin mbështetje për fontet e Microsoft, përkatësisht Times New Roman. Kishte kërkesa të tilla për një diplomë sipas GOST. Nëse e dini se si, mund ta modifikoni shabllonin për t'iu përshtatur nevojave tuaja. Në udhëzimet e mia, së pari do t'ju duhet të mashtroni me cilësimin PSCyr në TexLive. Konfigurimi bëhet në shpërndarjen Linux Mint Mate, për shpërndarjet e tjera mund t'ju duhet të kërkoni në google dosjet standarde të paketave TexLive për sistemin tuaj.

Instalimi i TexLive

Sigurisht, mund të instaloni vetëm pjesët e nevojshme të kësaj pakete. Por personalisht, sinqerisht isha shumë dembel për të kërkuar instalimin minimal të nevojshëm të punës. Për t'u siguruar që gjithçka funksionon, instaloni të gjithë paketën TexLive. Quhet tekstlive-plotë dhe peshon pak më shumë se 2 gigabajt, mbani parasysh këtë fakt. Ne ekzekutojmë komandën:

user@hostname:~$ sudo apt install texlive-full -y

Pas një instalimi mjaft të gjatë, mund të vazhdoni te artikulli tjetër.

Instalimi i konvertuesit Pandoc

Pandoc është një paketë Linux që ju lejon të konvertoni disa formate teksti në të tjera. Ka shumë veçori interesante që mund t'i gjeni në internet. Ne jemi të interesuar vetëm për mundësinë e konvertimit të një skedari të shënuar në PDF. Kontrolloni nëse Pandoc është i instaluar dhe nëse jo, instaloni atë. Për shembull si kjo:

user@hostname:~$ dpkg -s pandoc

Nëse dalja thotë se nuk është instaluar, instaloni:

user@hostname:~$ sudo apt install pandoc -y

Instalimi i paketës PSCyr për TexLive

Së pari ju duhet të shkarkoni PSCyr. Tani për tani është ende në dispozicion në këtë lidhje, nëse në kohën e leximit të artikullit nuk është i disponueshëm për ndonjë arsye, mos e humbni shpresën, është e lehtë ta gjeni atë së bashku me udhëzimet e instalimit duke shtypur diçka si "Instalimi i PsCyr texlive" në Google. Nëse është i disponueshëm, atëherë është më e lehtë për ju, shkarkoni dhe ne do të supozojmë se e keni shpaketuar arkivin në dosjen tuaj të shtëpisë dhe kështu rruga drejt dosjes që gjendet në arkiv duket si ~/PSCyr. Pastaj shkoni në Terminal dhe ekzekutoni komandat e mëposhtme në sekuencë:

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

Më pas, zbuloni se ku ndodhet drejtoria lokale tekstmf. Ne ekzekutojmë komandën:

user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'

Me shumë mundësi e keni këtë drejtori - /usr/local/share/texmf/, dhe më pas bëjmë:

user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/

Epo, ose nuk mund të shqetësoheni dhe të ekzekutoni një komandë që do të kopjohet në një dosje tekstmf kudo që të jetë ajo:

user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')

Fontet PSCyr të instaluara, lidheni me TexLive:

user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsr

Shablloni LaTeX për konvertimin md2pdf

Unë nuk do të përshkruaj saktësisht se si është konfiguruar ky shabllon dhe thjesht do ta jap nën spoiler pa shumë shpjegime. Mjafton të thuhet se është i konfiguruar mirë, të paktën për sa i përket mënyrës sesi trajton tekstet me shumë kod burimor. Nëse nuk jeni të kënaqur me madhësinë e dhëmbëzimit, ndarjen e rreshtave, mungesën e numërimit të seksioneve dhe nënseksioneve, atëherë për mendimin tim është mjaft e lehtë të kërkoni në Google pyetjen në internet "si ta bëni atë në Latex ..." dhe atëherë nevoja juaj. Nëse nuk është aspak e qartë, shkruani në komente, unë do të përpiqem të gërmoj në cilësimet e mia 4 vjet më parë dhe të përshkruaj se cila linjë e shabllonit është përgjegjëse për çfarë. Ndërkohë, unë do të shkruaj se si e bëra atë në kompjuterin tim, dhe ju jeni të lirë ta përsërisni ose modifikoni vetë.

Krijo një skedar shabllon.teks në katalog /usr/share/texlive/:

user@hostname:~$ sudo touch /usr/share/texlive/template.tex

Jepini lejet e leximit:

user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.tex

hapeni atë nën rrënjë dhe ngjisni përmbajtjen e fshehur nën spoilerin më poshtë në të:

user@hostname:~$ sudo nano /usr/share/texlive/template.tex

Pë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}

Ruajtja e skedarit /usr/share/texlive/template.tex dhe shkruani një skript që do të konvertojë skedarin Makrdown në PDF, duke krijuar në të njëjtën dosje një skedar të quajtur skedari Markdown me prefiksin .pdf, domethënë pas konvertimit emri i skedarit.md do të shfaqet në dosje. emri i skedarit.md.pdf. Le ta quajmë skenarin md2pdf dhe vihet në rrugë / usr / bin. Le të ekzekutojmë komandat në sekuencë:

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

Rreshti i 4-të përmban në fakt komandën e konvertimit. kushtojini vëmendje --nga=markdown_github. Versioni GitHub i Markdown është i pajtueshëm me Markdown origjinal, kështu që nëse teksti juaj është i shkruar në të, nuk keni pse të shqetësoheni. Nëse skedari juaj MD është i shkruar në një dialekt specifik Markdown, atëherë lexoni manualin Pandoc (man pandoc), sigurohuni që zbatimi juaj të mbështetet prej tij dhe shkulni /usr/bin/md2pdf nëse është e nevojshme.

Skript për instalim pak a shumë automatik

Nëse vërtet nuk dëshironi të konfiguroni asgjë dhe keni një shpërndarje të ngjashme me Ubuntu, mund të provoni të krijoni një skript me përmbajtjen e fshehur nën spoiler, dhe me shumë mundësi gjithçka do të instalohet vetë, e vetmja gjë është, kopjoni shabllonin TeX të postuar nën spoilerin e mësipërm aty ku është e nevojshme. Hapni Terminalin dhe ekzekutoni:

user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.sh

Pastaj plotësoni atë me përmbajtjen e mëposhtme:

Përmbajtja e skriptit $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

Ekzekutoni atë me komandën:

user@hostname:~$ sudo bash $HOME/installmd2pdf.sh

Mos e harroni atë /usr/share/texlive/template.tex duhet të plotësohet siç tregohet në seksionin "Shablloni LaTeX për konvertimin md2pdf» përmbajtje.

Duke përdorur md2pdf

Thjesht hapni dosjen me skedarin Markdown (disa_file.md) në Terminal dhe ekzekutoni komandën:

user@hostname:~$ md2pdf some_file.md

Si rezultat, një skedar do të shfaqet në dosje disa_file.md.pdf.

Përfundim

Bazuar në metodën e përshkruar, mund të ndërtoni çdo stil skedarësh PDF, gjithashtu mund të konvertoni formate të tjera në vend të md, çdo të mbështetur nga Pandoc. Guxoj të shpresoj që një ditë ky udhëzim do të jetë i dobishëm për 3 persona e gjysmë.

Burimi: www.habr.com

Shto një koment