Zgjidhja e gatshme markdown2pdf me kodin burimor për Linux

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 mjaft tĂ« gjerĂ«, me formatting tĂ« thjeshtĂ« si italik dhe bold. Po ashtu, Markdown Ă«shtĂ« i mirĂ« pĂ«r shkruarjen e artikujve qĂ« pĂ«rfshijnĂ« kodin burimor. Por ndonjĂ«herĂ« dĂ«shiron ta konvertosh atĂ« nĂ« njĂ« skedar PDF tĂ« zakonshĂ«m dhe tĂ« bukur pa humbje, pa probleme gjatĂ« konvertimit, siç ndodhi me mua — nuk mund tĂ« shkruaj nĂ« rusisht nĂ« komentet e kodit burimor, rreshtat e gjatĂ« nuk ndahen, por priten dhe probleme tĂ« tjera tĂ« vogla. UdhĂ«zimi do tĂ« lejojĂ« tĂ« konfigurosh shpejt konvertuesin. md2pdf pa u shqetĂ«suar shumĂ« se si funksionon. Skripti pĂ«r njĂ« instalim mĂ« automatik mĂ« poshtĂ« nĂ« seksionin pĂ«rkatĂ«s.

Shembulli im i shabllonit TeX për konvertim përdor paketën e fonteve PSCyr, e cila përfshin mbështetje për fontet Microsoft, sidomos Times New Roman. Këto ishin kërkesat për diplomën sipas standardeve GOST. Nëse dini, mund ta modifikoni modelin sipas nevojave tuaja. Në udhëzimin tim, do të duhet të bëni disa konfigurime me PSCyr në TexLive. Konfigurimi bëhet në distribucionin Linux Mint Mate; për distribuzione të tjera, ndoshta do të duhet të kërkoni për dosjet standart të paketës TexLive për sistemin tuaj.

Instalimi i TexLive

Natyrisht, mund të instaloni vetëm pjesët e nevojshme të këtij pakete. Por personalisht, mu duk e mërzitshme të kërkoja instalimin minimalisht të nevojshëm për punë. Për të siguruar që gjithçka të funksionojë saktësisht, instaloni të gjithë paketën TexLive. Ajo quhet texlive-full dhe peshon pak më shumë se 2 gigabajt, mbani mend këtë fakt. Ekzekutoni komandën:

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

Pas një instalimi mjaft të gjatë, mund të kaloni te pika tjetër.

Instalimi i konvertuesit Pandoc

Pandoc — njĂ« paketĂ« Linux qĂ« mundĂ«son konvertimin e disa formateve tĂ« tekstit nĂ« formate tĂ« tjera. Ka shumĂ« mundĂ«si interesante, me tĂ« cilat mund tĂ« informoheni vetĂ« nĂ« internet. Ne jemi tĂ« interesuar vetĂ«m pĂ«r mundĂ«sinĂ« e kalimit tĂ« njĂ« skedari markdown nĂ« PDF. Le tĂ« verifikojmĂ« nĂ«se Pandoc Ă«shtĂ« i instaluar dhe nĂ«se nuk Ă«shtĂ«, ta instalojmĂ« atĂ«. PĂ«r shembull kĂ«shtu:

user@hostname:~$ dpkg -s pandoc

NĂ«se nĂ« daljen Ă«shtĂ« shkruar se nuk Ă«shtĂ« i instaluar — instalojmĂ«:

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

Instalimi i paketës PSCyr për TexLive

Për të filluar, duhet të shkarkoni PSCyr. Aktualisht, ai është ende i disponueshëm në këtë lidhjes, nëse kur i lexoni këto rreshta ajo për një arsye të caktuar nuk është e disponueshme, mos u shqetësoni, nuk është e vështirë ta gjeni atë së bashku me udhëzimin për instalim, duke kërkuar në Google diçka si "Instalimi i PsCyr texlive". Nëse është e disponueshme, atëherë ju është më e lehtë, shkarkoni dhe le të supozojmë se keni nxjerrë arkivin në dosjen tuaj të shtëpisë dhe kështu rruga për dosjen që ndodhet në arkiv duket si ~/PSCyr. Tani hyni në Terminal dhe ekzekutoni 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.map

Më pas do të mësojmë se ku ndodhet katalogu lokal texmf. Ekzekutojmë komandën:

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

ShumĂ« mund tĂ« jetĂ« qĂ« ky katalog juaj Ă«shtĂ« — /usr/local/share/texmf/, dhe atĂ«herĂ« ne ekzekutojmĂ«:

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

Ose mund të mos e komplikoni dhe të ekzekutoni komandën që do të kopjojë në dosjen texmf pavarësisht se ku ndodhet ajo:

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

Fontet PSCyr janë instaluar, i lidhim në TexLive:

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

Modeli LaTeX për konvertimin md2pdf

Nuk do ta përshkruaj se si është konfigurimi i këtij modeli, dhe do ta ofroj atë nën spoler pa shumë shpjegime. Mjafton të themi se është konfiguruar mirë, të paktën sa i përket përpunimit të teksteve me shumë kod burimi. Nëse nuk jeni të kënaqur me madhësitë e tërheqjes, intervalet midis rreshtave, mungesën e numrave të seksioneve dhe nënseksioneve, mendoj se është mjaft e lehtë të kërkoni në internet pyetjen "si të bëj në LaTeX..." dhe pastaj do të jetë nevoja juaj. Nëse është krejtësisht e paqartë, shkruani në komentet, do të përpiqem të kujtoj konfigurimet e mia 4-vjeçare dhe të shpjegoj çfarë ka çdo rresht i modelit. Deri atëherë, do ta shpjegoj 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.

Krijoni skedarin template.tex në katalog /usr/share/texlive/:

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

Caktoni të drejtat e leximit:

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

hapeni me rrënjën dhe ngjisni në të përmbajtjen e fshihet nën spolerin më poshtë:

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

Përmbajtja e modelit /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 Markdown në PDF, duke krijuar në të njëjtin direktor skedarin me emrin e skedarit Markdown me prefix .pdf, domethënë pas konvertimit filename.md në direktor do të shfaqet filename.md.pdf. Do ta quajmë skriptin md2pdf dhe do ta vendosim në rrugën /usr/bin. Do të ekzekutojmë komandat një pas një:

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

NĂ« rreshtin e 4-tĂ«, nĂ« fakt, Ă«shtĂ« e nxjerrĂ« komanda e konvertimit. Vini re nĂ« —from=markdown_github. Versioni GitHub i Markdown Ă«shtĂ« plotĂ«sisht i pĂ«rshtatshĂ«m me Markdown origjinal, kĂ«shtu qĂ« nĂ«se teksti juaj Ă«shtĂ« shkruar me tĂ«, nuk duhet tĂ« shqetĂ«soheni. NĂ«se, nga ana tjetĂ«r, skedari juaj MD Ă«shtĂ« shkruar nĂ« njĂ« dialekt specifik tĂ« Markdown, atĂ«herĂ« shkarkoni manualin pĂ«r Pandoc (man pandoc), sigurohuni se implementimi juaj mbĂ«shtetet nga ai, dhe modifikoni /usr/bin/md2pdf nĂ«se Ă«shtĂ« e nevojshme.

Skripti për një instalim më-më pak automatik

Nëse nuk keni shumë dëshirë të konfiguroni diçka fare dhe keni një distribucion të ngjashëm me Ubuntu, mund të provoni të krijoni një skritp me përmbajtjen e fshehur nën spoiler, dhe në të gjitha mundësitë gjithçka do të instalohet automatikisht. E vetmja gjë, duhet të kopjoni TeX-templates, të publikuara më lart, në vendin e duhur. Hapni Terminalin dhe ekzekutoni:

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

Më pas, plotësoni atë me përmbajtjen e tillë:

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

Eksploroni atë me komandën:

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

Mos harroni se /usr/share/texlive/template.tex duhet të plotësoni me përmbajtjen e treguar në seksionin "Modeli LaTeX për konvertimin md2pdf".

Përdorimi i md2pdf

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

user@hostname:~$ md2pdf some_file.md

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

Përfundimi

Baza e metodĂ«s sĂ« pĂ«rshkruar mund tĂ« ndĂ«rtohet sipas çdo stili tĂ« skedave PDF, gjithashtu mund tĂ« konvertoni nĂ« vend tĂ« md formate tĂ« tjera, tĂ« gjitha tĂ« mbĂ«shtetura nga Pandoc. Shpresoj qĂ« njĂ« ditĂ« kjo udhĂ«zues do t’u vlejĂ« 3.5 njerĂ«zve.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster