Soluzzjoni markdown2pdf lesta b'kodiċi tas-sors għal Linux

Daħla

Markdown huwa mod tajjeb ħafna biex tikteb artiklu qasir, u xi drabi pjuttost ħafna test, b'format korsiv u grassett sempliċi. Markdown huwa tajjeb ukoll biex tikteb artikli bil-kodiċi tas-sors inkluż. Imma kultant trid bla telf, tiżfen b'tamburin biex taqbeżha f'fajl PDF regolari, iffurmat tajjeb, u sabiex ma jkunx hemm problemi waqt il-konverżjoni, li, pereżempju, kelli - ma tistax tikteb bir-Russu fil- il-kummenti tal-kodiċi tas-sors, linji twal wisq mhumiex trasferiti, iżda maqtugħin u problemi minuri oħra. L-istruzzjoni tippermettilek li twaqqaf malajr il-konvertitur md2pdf mingħajr ma verament jifhmu kif taħdem. L-iskrittura għal installazzjoni ftit jew wisq awtomatika tinsab hawn taħt fit-taqsima xierqa.

Il-kampjun TeX tiegħi għall-konverżjoni juża l-pakkett tat-tipa PSCyr, li jinkludi appoġġ għall-fonts Microsoft, jiġifieri Times New Roman. Kien hemm rekwiżiti bħal dawn għal diploma skond GOST. Jekk taf kif, tista 'timmodifika l-mudell biex taqdi l-bżonnijiet tiegħek. Fl-istruzzjonijiet tiegħi stess, l-ewwel ikollok tqarraq bl-issettjar PSCyr f'TexLive. Is-setup isir fid-distribuzzjoni tal-Linux Mint Mate, għal distribuzzjonijiet oħra jista 'jkollok tfittex fuq Google l-folders standard tal-pakkett TexLive għas-sistema tiegħek.

Installazzjoni ta' TexLive

Naturalment, tista 'tinstalla biss il-partijiet meħtieġa ta' dan il-pakkett. Imma personalment, kont franchement għażżien wisq biex infittex l-installazzjoni minima tax-xogħol meħtieġa. Biex tiżgura li kollox jaħdem, installa l-pakkett TexLive kollu. Huwa msejjaħ texlive-full u jiżen ftit aktar minn 2 gigabytes, żomm dan il-fatt f'moħħu. Aħna nwettqu l-kmand:

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

Wara installazzjoni twila biżżejjed, tista 'tipproċedi għall-oġġett li jmiss.

Installazzjoni tal-Konvertitur Pandoc

Pandoc huwa pakkett Linux li jippermettilek tikkonverti xi formati ta 'test għal oħrajn. Għandu ħafna karatteristiċi interessanti li tista 'ssib ruħek fuq l-Internet. Aħna huma interessati biss fil-possibbiltà li jikkonvertu fajl markdown għal PDF. Iċċekkja jekk Pandoc huwiex installat u jekk le, installah. Per eżempju bħal dan:

user@hostname:~$ dpkg -s pandoc

Jekk l-output jgħid li mhuwiex installat, installa:

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

Installazzjoni tal-pakkett PSCyr għal TexLive

L-ewwel trid tniżżel PSCyr. Għalissa għadu disponibbli f'dan rabta, jekk fil-ħin tal-qari tal-artiklu ma jkunx disponibbli għal xi raġuni, taqtax qalbek, huwa faċli li ssibha flimkien mal-istruzzjonijiet tal-installazzjoni billi ttajpja xi ħaġa bħal "PsCyr texlive installation" fil-Google. Jekk tkun disponibbli, allura jkun aktar faċli għalik, niżżel u aħna nassumu li ħriġt l-arkivju fil-folder tad-dar tiegħek u għalhekk il-mogħdija għall-folder li jinsab fl-arkivju tidher bħal ~/PSCyr. Imbagħad mur fit-Terminal u wettaq il-kmandi li ġejjin f'sekwenza:

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

Sussegwentement, sib fejn jinsab id-direttorju lokali texmf. Aħna nwettqu l-kmand:

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

X'aktarx li għandek dan id-direttorju - /usr/local/share/texmf/, u mbagħad nagħmlu:

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

Ukoll, jew ma tistax tolqot u tmexxi kmand li se kopja għal folder texmf tkun fejn hi:

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

Fonts PSCyr installati, qabbad ma' TexLive:

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

Mudell LaTeX għall-konverżjoni md2pdf

Mhux se niddeskrivi eżattament kif dan il-mudell huwa kkonfigurat, u sempliċement se nagħtih taħt l-ispoiler mingħajr ħafna spjegazzjoni. Biżżejjed ngħid li huwa kkonfigurat tajjeb, għall-inqas f'termini ta 'kif jimmaniġġja testi b'ħafna kodiċi sors. Jekk m'intix sodisfatt bid-daqs tal-inċiżi, l-ispazjar tal-linji, in-nuqqas ta 'numerazzjoni tas-sezzjonijiet u s-sottosezzjonijiet, allura fl-opinjoni tiegħi huwa pjuttost faċli li wieħed ifittex fuq l-Internet il-mistoqsija "kif tagħmel dan f'Latex ..." u imbagħad il-ħtieġa tiegħek. Jekk ma tkunx ċara xejn, ikteb fil-kummenti, se nipprova nidħol fis-settings tiegħi stess 4 snin ilu u niddeskrivi liema linja tal-mudell hija responsabbli għal xiex. Sadanittant, se nikteb kif għamilt fuq il-PC tiegħi, u int liberu li tirrepeti jew timmodifikaha għalik innifsek.

Oħloq fajl template.tex fil-katalgu /usr/share/texlive/:

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

Agħtiha l-permessi tal-qari:

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

iftaħ taħt l-għerq u waħħal fih il-kontenut moħbi taħt l-ispoiler hawn taħt:

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

Kontenut tal-mudell /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}

Iffrankar tal-fajl /usr/share/texlive/template.tex u ikteb skript li se jikkonverti l-fajl Makrdown għal PDF, u joħloq fl-istess folder fajl imsejjaħ il-fajl Markdown bil-prefiss .pdf, jiġifieri wara l-konverżjoni filename.md se jidher fil-folder. filename.md.pdf. Ejja nsejħu l-iskrittura md2pdf u tpoġġi fit-triq / usr / bin. Ejja tesegwixxi l-kmandi f'sekwenza:

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

Ir-4 linja fil-fatt fiha l-kmand tal-konverżjoni. tagħti attenzjoni lil --from=markdown_github. Il-verżjoni GitHub ta 'Markdown hija kompatibbli b'lura mal-Markdown oriġinali, għalhekk jekk it-test tiegħek ikun miktub fiha, m'għandekx għalfejn tinkwieta. Jekk il-fajl MD tiegħek huwa miktub b'djalett speċifiku ta' Markdown, imbagħad aqra l-manwal Pandoc (man pandoc), kun żgur li l-implimentazzjoni tiegħek hija appoġġjata minnha, u tweak /usr/bin/md2pdf jekk meħtieġ.

Skript għal aktar jew inqas installazzjoni awtomatika

Jekk verament ma trid tikkonfigura xejn, u għandek distribuzzjoni bħal Ubuntu, tista 'tipprova toħloq skript bil-kontenut moħbi taħt l-ispoiler, u x'aktarx kollox se jinstalla lilu nnifsu, l-unika ħaġa hija, kopja il-mudell TeX mibgħut taħt l-ispoiler hawn fuq fejn għandek bżonn lilhom infushom. Iftaħ it-Terminal u mexxi:

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

Imbagħad imla bil-kontenut li ġej:

Il-kontenut tal-iskrittura $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

Mexxiha bil-kmand:

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

Tinsiex dak /usr/share/texlive/template.tex trid timtela kif indikat fit-taqsima "Mudell LaTeX għall-konverżjoni md2pdf» kontenut.

Uża md2pdf

Iftaħ il-folder bil-fajl Markdown (xi_fajl.md) fit-Terminal u mexxi l-kmand:

user@hostname:~$ md2pdf some_file.md

Bħala riżultat, fajl se jidher fil-folder xi_fajl.md.pdf.

Konklużjoni

Ibbażat fuq il-metodu deskritt, inti tista 'tibni kwalunkwe stil ta' fajls PDF, tista 'wkoll tikkonverti formati oħra minflok md, kwalunkwe appoġġjati minn Pandoc. Nazzarda nittama li xi darba din l-istruzzjoni tkun utli għal 3 nies u nofs.

Sors: www.habr.com

Żid kumment