Çareseriya amade-made markdown2pdf bi koda çavkaniyê ji bo Linux

Pêşniyar

Markdown rêgezek girîng e ku meriv gotarek kurt, û carinan pir pir nivîsar, bi şeklê îtalîk û qelewî binivîsîne. Markdown ji bo nivîsandina gotaran bi koda çavkaniyê jî baş e. Lê carinan hûn dixwazin ku bêkêmasî wenda bikin, bi tembûrê re dans bikin da ku wê têxin nav pelek PDF-ya birêkûpêk, xweş-çêkirî, û da ku di dema veguheztinê de pirsgirêk dernekevin, ya ku, mînakî min hebû - hûn nikanin bi rûsî binivîsin. şîroveyên koda çavkaniyê, rêzikên pir dirêj nayên veguheztin, lê qut dibin û pirsgirêkên piçûk ên din. Talîmat dê bihêle ku hûn bi lez veguherîner saz bikin md2pdf bêyî ku bi rastî fêm bikin ka ew çawa dixebite. Skrîpta ji bo sazkirina zêde an kêmtir otomatîk li jêr di beşa guncan de ye.

Şablona min a TeX-a nimûne ji bo veguheztinê pakêta tîpên PSCyr-ê bikar tîne, ku tê de piştgirî ji tîpên Microsoft-ê re vedigire, bi taybetî Times New Roman. Li gorî GOST-ê ji bo dîplomayê hewcedariyên weha hebûn. Heke hûn çawa dizanin, hûn dikarin şablonê li gorî hewcedariyên xwe biguhezînin. Di rêwerzên min de, hûn ê pêşî neçar bikin ku li ser mîhengê PSCyr-ê li TexLive bixapînin. Sazkirin di belavkirina Linux Mint Mate de pêk tê, ji bo belavkirinên din dibe ku hûn ji bo pergala xwe peldankên pakêta standard TexLive google bikin.

Sazkirina TexLive

Bê guman, hûn dikarin tenê beşên pêwîst ên vê pakêtê saz bikin. Lê bi kesane, ez bi eşkere pir tembel bûm ku li sazkirina xebata herî kêm a pêwîst bigerim. Ji bo ku hûn pê ewle bibin ku her tişt dixebite, tevahiya pakêta TexLive saz bikin. Tê gotin textlive-tijî û giraniya wê ji 2 gigabaytan zêdetir e, vê rastiyê li ber çavan bigirin. Em fermanê pêk tînin:

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

Piştî sazkirinek têra xwe dirêj, hûn dikarin berbi tiştê din ve biçin.

Sazkirina Pandoc Converter

Pandoc pakêtek Linux-ê ye ku destûrê dide te ku hûn hin formên nivîsê ji yên din veguherînin. Gelek taybetmendiyên balkêş hene ku hûn dikarin xwe li ser Înternetê bibînin. Em tenê bi îhtîmala veguheztina pelek nîşankirî bo PDF-ê eleqedar in. Kontrol bikin ka Pandoc hatiye sazkirin an na, wê saz bikin. Mînak bi vî rengî:

user@hostname:~$ dpkg -s pandoc

Ger encam dibêje ku ew nehatiye saz kirin, saz bikin:

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

Sazkirina pakêta PSCyr ji bo TexLive

Pêşî hûn hewce ne ku PSCyr dakêşin. Heya niha jî li ser vê yekê heye link, heke di dema xwendina gotarê de ew ji ber hin sedeman peyda nebe, bêhêvî nebin, bi nivîsandina tiştek wekî "Sazkirina PsCyr texlive" di Google de hêsan e ku meriv wê digel rêwerzên sazkirinê bibîne. Ger ew hebe, wê hingê ji we re hêsantir e, dakêşin û em ê texmîn bikin ku we arşîv di peldanka xaniyê xwe de vekiriye û bi vî rengî riya peldanka ku di arşîvê de heye dixuye. ~/PSCyr. Dûv re herin Termînalê û fermanên jêrîn bi rêzê bicîh bînin:

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

Piştre, fêr bibin ka pelrêça herêmî li ku derê ye textmf. Em fermanê pêk tînin:

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

Bi îhtîmaleke mezin ev pelrêça we heye - /usr/local/share/texmf/, û paşê em dikin:

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

Welê, an hûn nekarin aciz bibin û fermanek ku dê li peldankek kopî bike bimeşînin textmf ew li ku be:

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

Fontên PSCyr hatine saz kirin, bi TexLive ve girêdin:

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

Şablona LaTeX ji bo veguheztina md2pdf

Ez ê tam diyar nekim ka ev şablon çawa tê mîheng kirin, û ez ê bi tenê bêyî ravekirinek zêde wê di binê spoilerê de bidim. Bes e ku meriv bêje ku ew baş hatî mîheng kirin, bi kêmanî di warê ka ew çawa nivîsarên bi gelek koda çavkanî re mijûl dike. Ger hûn ji mezinahiya kêşan, dûrbûna rêzan, nebûna jimarekirina beş û beşan razî ne, wê hingê bi dîtina min ew pir hêsan e ku meriv li ser Înternetê pirsa "çawa di Latex de bike ..." google bike û bike. paşê hewcedariya we. Ger ew qet ne zelal be, di şîroveyan de binivîsin, ez ê hewl bidim ku 4 sal berê berê xwe bidim mîhengên xwe û diyar bikim ka kîjan rêza şablonê ji çi berpirsiyar e. Di vê navberê de, ez ê binivîsim ka min ew çawa li ser PC-ya xwe kir, û hûn azad in ku hûn wê ji bo xwe dubare bikin an biguhezînin.

Pelê çêbikin şablon.tex di katalogê de /usr/share/texlive/:

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

Destûrên xwendinê bidin wê:

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

wê di bin kokê de vekin û naveroka ku di bin spoilera jêrîn de veşartî têxin nav wê:

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

Naveroka şablonê /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}

Pelê tomar dike /usr/share/texlive/template.tex û skrîptek ku dê pelê Makrdown veguherîne PDF-ê binivîsîne, di heman peldankê de pelek bi navê pelê Markdown bi pêşgira .pdf, ango piştî veguheztinê biafirîne. filename.md dê di peldankê de xuya bibe. filename.md.pdf. Werin em bang li senaryoyê bikin md2pdf û danî ser rê / usr / bin. Werin em fermanan li pey hev bicîh bînin:

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

Rêza 4-an bi rastî fermana veguheztinê dihewîne. bala xwe bide --from=markdown_github. Guhertoya GitHub ya Markdown bi paşverû bi Markdown-a orîjînal re hevaheng e, ji ber vê yekê heke nivîsa we tê de hatî nivîsandin, hûn ne hewce ne ku xeman bikin. Ger pelê MD-ya we bi zaravayek Markdown-ê taybetî hatî nivîsandin, wê hingê pirtûka Pandoc bixwînin (man pandoc), pê ewle bine ku pêkanîna we ji hêla wê ve tê piştgirî kirin, û tweak bikin /usr/bin/md2pdf ger pêwîst be.

Skrîpta ji bo sazkirina zêde an kêmtir otomatîk

Heke hûn bi rastî naxwazin tiştek mîheng bikin, û we belavokek mîna Ubuntu-yê heye, hûn dikarin biceribînin ku bi naverokên ku di binê spoilerê de veşartî skrîptek biafirînin, û bi îhtîmalek mezin dê her tişt xwe saz bike, tenê tişt ev e, kopî bikin. şablona TeX di binê spoilera jor de li cîhê ku hûn bi xwe hewce ne hatine şandin. Termînalê vekin û bixebitin:

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

Dûv re wê bi naveroka jêrîn dagirin:

Naveroka skrîpta $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

Wê bi fermanê bixebitin:

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

Vê ji bîr nekin /usr/share/texlive/template.tex divê wekî ku di beşê de hatî destnîşan kirin were dagirtinŞablona LaTeX ji bo veguheztina md2pdf» naverok.

Bikaranîna md2pdf

Tenê peldankê bi pelê Markdown vekin (some_file.md) di Termînalê de û fermanê bimeşînin:

user@hostname:~$ md2pdf some_file.md

Wekî encamek, pelek dê di peldankê de xuya bibe some_file.md.pdf.

encamê

Li ser bingeha rêbaza diyarkirî, hûn dikarin her şêwazek pelên PDF-ê ava bikin, hûn dikarin li şûna md, her ku ji hêla Pandoc ve hatî piştgirî kirin, formatên din jî biguherînin. Ez diwêrim hêvî bikim ku rojekê ev talîmat ji bo 3 kes û nîvan bikêr be.

Source: www.habr.com

Add a comment