Pare-fè solisyon markdown2pdf ak kòd sous pou Linux

Avètisman

Markdown se yon bon fason yo ekri yon atik kout, epi pafwa byen anpil nan tèks, ak fòma senp italik ak fonse. Markdown bon tou pou ekri atik ak kòd sous enkli. Men pafwa ou vle san pèt, danse ak yon tanbourin rapouswiv li nan yon regilye, ki byen fòme dosye PDF, epi pou pa gen okenn pwoblèm pandan konvèsyon, ki, pou egzanp, mwen te gen - ou pa ka ekri nan Ris nan kòmantè yo nan kòd la sous, liy twò long yo pa transfere, men koupe ak lòt pwoblèm minè. Enstriksyon an pral pèmèt ou byen vit mete konvètisè a md2pdf san yo pa reyèlman konprann ki jan li fonksyone. Script la pou yon enstalasyon plis oswa mwens otomatik se anba a nan seksyon ki apwopriye a.

Echantiyon modèl TeX mwen an pou konvèsyon itilize pake font PSCyr, ki gen ladan sipò pou polis Microsoft, sètadi Times New Roman. Te gen kondisyon sa yo pou yon diplòm dapre GOST. Si w konnen ki jan, ou ka modifye modèl la pou adapte ak bezwen ou yo. Nan pwòp enstriksyon mwen yo, ou pral premye oblije twonpe ak anviwònman PSCyr nan TexLive. Se konfigirasyon an fè nan distribisyon Linux Mint Mate, pou lòt distribisyon ou ka oblije google dosye estanda pake TexLive pou sistèm ou an.

Enstale TexLive

Natirèlman, ou ka enstale sèlman pati ki nesesè nan pake sa a. Men, pèsonèlman, mwen te franchman twò parese pou chèche pou enstalasyon minimòm travay nesesè. Pou asire w ke tout bagay mache, enstale tout pake TexLive la. Li rele texlive-plen ak peze yon ti kras plis pase 2 jigokte, kenbe reyalite sa a nan tèt ou. Nou egzekite kòmandman an:

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

Apre yon enstalasyon ase lontan, ou ka ale nan atik kap vini an.

Enstale Pandoc Converter

Pandoc se yon pake Linux ki pèmèt ou konvèti kèk fòma tèks nan lòt. Li gen yon anpil nan karakteristik enteresan ke ou ka jwenn tèt ou sou entènèt la. Nou enterese sèlman nan posiblite pou konvèti yon dosye markdown nan PDF. Tcheke si Pandoc enstale epi si se pa sa, enstale li. Pou egzanp tankou sa a:

user@hostname:~$ dpkg -s pandoc

Si pwodiksyon an di ke li pa enstale, enstale:

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

Enstale pake PSCyr pou TexLive

Premye ou bezwen telechaje PSCyr. Pou kounye a li toujou disponib nan sa a lyen, si nan moman li atik la li pa disponib pou kèk rezon, pa dezespwa, li fasil jwenn li ansanm ak enstriksyon yo enstalasyon pa tape yon bagay tankou "Enstale PsCyr texlive" nan Google. Si li disponib, Lè sa a, li pi fasil pou ou, telechaje epi nou pral asime ke ou te depake achiv la nan katab lakay ou epi konsa chemen an nan katab ki genyen nan achiv la sanble. ~/PSCyr. Lè sa a, ale nan Tèminal la epi egzekite kòmandman sa yo nan sekans:

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

Apre sa, chèche konnen ki kote anyè lokal la ye teksmf. Nou egzekite kòmandman an:

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

Gen plis chans ou genyen anyè sa a - /usr/local/share/texmf/, epi answit nou fè:

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

Oke, oswa ou pa ka deranje epi kouri yon lòd ki pral kopye nan yon katab teksmf kèlkeswa kote li ye:

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

Polis PSCyr enstale, konekte ak TexLive:

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

Modèl LaTeX pou konvèsyon md2pdf

Mwen pa pral dekri egzakteman ki jan modèl sa a se configuré, epi yo pral tou senpleman bay li anba spoiler la san anpil eksplikasyon. Li ase pou di ke li byen configuré, omwen an tèm de fason li okipe tèks ak yon anpil nan kòd sous. Si ou pa satisfè ak gwosè a nan endentasyon, espas liy, mank de nimero nan seksyon ak sou-seksyon, Lè sa a, nan opinyon mwen li se byen fasil yo google kesyon an sou entènèt la "ki jan fè li nan latèks ..." ak Lè sa a, bezwen ou. Si li pa ditou klè, ekri nan kòmantè yo, mwen pral eseye fouye nan pwòp anviwònman mwen an 4 ane de sa epi dekri ki liy nan modèl la ki responsab pou sa. Nan entre-temps la, mwen pral ekri kijan mwen te fè li sou PC mwen an, epi ou gen dwa repete oswa modifye li pou tèt ou.

Kreye yon fichye template.tex nan katalòg la /usr/share/texlive/:

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

Bay li otorizasyon pou li:

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

ouvri li anba rasin lan epi kole sa ki kache anba beke anba a nan li:

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

Kontni modèl /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}

Sove fichye a /usr/share/texlive/template.tex epi ekri yon script ki pral konvèti fichye Makrdown a an PDF, kreye nan menm katab la yon fichye ki rele fichye Markdown ak prefiks .pdf, sa vle di apre konvèsyon an. filename.md ap parèt nan katab la. filename.md.pdf. Ann rele script la md2pdf epi mete sou wout la / usr / bin. Ann egzekite kòmandman yo nan sekans:

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

Liy 4th aktyèlman genyen kòmand konvèsyon an. peye atansyon sou --from=markdown_github. Vèsyon GitHub Markdown la konpatib ak Markdown orijinal la, kidonk si tèks ou ekri ladan l, ou pa bezwen enkyete. Si fichye MD ou a ekri nan yon dyalèk Markdown espesifik, li manyèl Pandoc la (man pandoc), asire w ke aplikasyon w lan sipòte pa li, epi ajiste /usr/bin/md2pdf Si nesesè.

Script pou enstalasyon plis oswa mwens otomatik

Si ou pa reyèlman vle configured anyen ditou, epi ou gen yon distribisyon ki tankou Ubuntu, ou ka eseye kreye yon script ak sa ki kache anba spoiler la, ak gen plis chans tout bagay pral enstale tèt li, bagay la sèlman se, kopi. modèl la TeX afiche anba beke ki anwo a kote sa nesesè tèt yo. Louvri Tèminal epi kouri:

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

Lè sa a, ranpli li ak kontni sa a:

Sa ki nan 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/md2pdf

Kouri li ak kòmandman an:

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

Pa bliye sa /usr/share/texlive/template.tex dwe ranpli jan sa endike nan seksyon an "Modèl LaTeX pou konvèsyon md2pdf» kontni.

Sèvi ak md2pdf

Jis louvri katab la ak dosye Markdown la (some_file.md) nan Tèminal la epi kouri lòd la:

user@hostname:~$ md2pdf some_file.md

Kòm yon rezilta, yon dosye ap parèt nan katab la some_file.md.pdf.

Konklizyon

Ki baze sou metòd ki dekri a, ou ka bati nenpòt ki style nan dosye PDF, ou ka tou konvèti lòt fòma olye pou yo md, nenpòt ki sipòte pa Pandoc. Mwen oze espere ke yon jou enstriksyon sa a ap itil 3 moun edmi.

Sous: www.habr.com

Add nouvo kòmantè