Ready-made markdown2pdf-oplossing mei boarnekoade foar Linux

Foarwurd

Markdown is in geweldige manier om in koart artikel te skriuwen, en soms frijwat tekst, mei ienfâldige kursyf en fet opmaak. Markdown is ek goed foar it skriuwen fan artikels mei boarnekoade ynbegrepen. Mar soms wolle jo loslitte, dûnsje mei in tamboeryn om it oer te nimmen yn in gewoane, goed foarme PDF-bestân, en sadat der gjin problemen binne by de konverzje, dy't ik bygelyks hie - jo kinne net yn it Russysk skriuwe yn de opmerkings fan de boarne koade, te lange rigels wurde net oerdroegen, mar snije en oare lytse problemen. De ynstruksje lit jo de converter fluch ynstelle md2 pdf sûnder echt te begripen hoe't it wurket. It skript foar in min of mear automatyske ynstallaasje is hjirûnder yn 'e passende seksje.

Myn foarbyld TeX-sjabloan foar konverzje brûkt it PSCyr-lettertypepakket, dat stipe omfettet foar Microsoft-lettertypen, nammentlik Times New Roman. Der wiene sokke easken foar in diploma neffens GOST. As jo ​​​​witte hoe, kinne jo it sjabloan oanpasse oan jo behoeften. Yn myn eigen ynstruksjes moatte jo earst dwaze mei de PSCyr-ynstelling yn TexLive. De opset wurdt dien yn 'e Linux Mint Mate-distribúsje, foar oare distribúsjes moatte jo miskien de standert TexLive-pakketmappen foar jo systeem googleje.

TexLive ynstallearje

Fansels kinne jo allinich de nedige dielen fan dit pakket ynstallearje. Mar persoanlik wie ik earlik te lui om te sykjen nei de minimale needsaaklike wurkynstallaasje. Om te soargjen dat alles wurket, ynstallearje it heule TexLive-pakket. It hjit texlive-fol en waacht in bytsje mear as 2 gigabyte, hâld dit feit yn gedachten. Wy fiere it kommando út:

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

Nei in foldwaande lange ynstallaasje kinne jo trochgean nei it folgjende item.

Ynstallearje de Pandoc Converter

Pandoc is in Linux-pakket wêrmei jo guon tekstformaten kinne konvertearje nei oaren. It hat in protte nijsgjirrige funksjes dy't jo sels kinne fine op it ynternet. Wy binne allinich ynteressearre yn 'e mooglikheid om in markdown-bestân te konvertearjen nei PDF. Kontrolearje oft Pandoc is ynstalleare en as net, ynstallearje it. Bygelyks as dit:

user@hostname:~$ dpkg -s pandoc

As de útfier seit dat it net ynstalleare is, ynstallearje dan:

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

It ynstallearjen fan it PSCyr-pakket foar TexLive

Earst moatte jo PSCyr downloade. Foar no is it noch beskikber op dizze link, as it op it momint fan it lêzen fan it artikel om ien of oare reden net beskikber is, wanhopich dan net, it is maklik om it te finen tegearre mei de ynstallaasje-ynstruksjes troch wat te typen lykas "Ynstallearje PsCyr texlive" yn Google. As it beskikber is, dan is it makliker foar jo, download en wy sille oannimme dat jo it argyf yn jo thúsmap útpakt hawwe en dus it paad nei de map yn it argyf liket ~/PSCyr. Gean dan nei it terminal en útfiere de folgjende kommando's yn folchoarder:

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

Folgje dan út wêr't de lokale map leit texmf. Wy fiere it kommando út:

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

Meast wierskynlik hawwe jo dizze map - /usr/local/share/texmf/, en dan dogge wy:

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

No, of jo kinne net lestich falle en in kommando útfiere dat sil kopiearje nei in map texmf wêr't se ek is:

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

PSCyr-lettertypen ynstalleare, ferbine mei TexLive:

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

LaTeX-sjabloan foar md2pdf-konverzje

Ik sil net beskriuwe krekt hoe't dit sjabloan is ynsteld, en sil gewoan jou it ûnder de spoiler sûnder folle útlis. It is genôch om te sizzen dat it goed ynsteld is, teminsten yn termen fan hoe't it teksten mei in protte boarnekoade omgiet. As jo ​​​​net tefreden binne mei de grutte fan ynspringen, rigelôfstân, it ûntbrekken fan nûmering fan seksjes en subseksjes, dan is it nei myn miening frij maklik om de fraach op it ynternet te googlejen "hoe it te dwaan yn lateks ..." en dan dyn need. As it hielendal net dúdlik is, skriuw dan yn 'e kommentaren, ik sil besykje te ferdjipjen yn myn eigen ynstellings 4 jier lyn en beskriuwe hokker line fan it sjabloan ferantwurdlik is foar wat. Yn 'e tuskentiid sil ik opskriuwe hoe't ik it dien haw op myn PC, en jo binne frij om it sels te werheljen of te feroarjen.

Meitsje in triem template.tex yn 'e katalogus /usr/share/texlive/:

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

Jou it lêsrjochten:

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

iepenje it ûnder de woartel en plak de ynhâld ferburgen ûnder de spoiler hjirûnder:

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

Template ynhâld /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}

It bewarjen fan de triem /usr/share/texlive/template.tex en skriuw in skript dat it Makrdown-bestân sil konvertearje nei PDF, en meitsje yn deselde map in bestân neamd de Markdown-bestân mei it foarheaksel .pdf, dat is, nei de konverzje triemnamme.md sil ferskine yn 'e map. triemnamme.md.pdf. Litte wy it skript neame md2 pdf en op 'e wei sette / usr / bin. Litte wy de kommando's yn folchoarder útfiere:

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

De 4e rigel befettet eins it konverzje kommando. jou oandacht oan --from=markdown_github. De GitHub-ferzje fan Markdown is efterút kompatibel mei de orizjinele Markdown, dus as jo tekst deryn skreaun is, hoege jo gjin soargen te meitsjen. As jo ​​MD-bestân skreaun is yn in spesifyk Markdown-dialekt, lês dan de Pandoc-hantlieding (man pandoc), soargje derfoar dat jo ymplemintaasje der troch wurdt stipe, en oanpasse /usr/bin/md2pdf as it nedich is.

Skript foar min of mear automatyske ynstallaasje

As jo ​​hielendal neat wolle konfigurearje, en jo hawwe in Ubuntu-like distribúsje, kinne jo besykje in skript te meitsjen mei de ynhâld ferburgen ûnder de spoiler, en nei alle gedachten sil alles sels ynstallearje, it ienige ding is, kopiearje de TeX sjabloan pleatst ûnder de spoiler hjirboppe wêr nedich sels. Iepenje Terminal en útfiere:

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

Folje it dan mei de folgjende ynhâld:

De ynhâld fan it $HOME/installmd2pdf.sh skript

#!/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

Run it mei it kommando:

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

Ferjit dat net /usr/share/texlive/template.tex moat ynfolle wurde lykas oanjûn yn 'e seksje "LaTeX-sjabloan foar md2pdf-konverzje» ynhâld.

Mei md2pdf

Iepenje gewoan de map mei it Markdown-bestân (some_file.md) yn it terminal en fier it kommando út:

user@hostname:~$ md2pdf some_file.md

As resultaat sil in bestân ferskine yn 'e map some_file.md.pdf.

konklúzje

Op grûn fan 'e beskreaune metoade kinne jo elke styl fan PDF-bestannen bouwe, jo kinne ek oare formaten konvertearje ynstee fan md, elk stipe troch Pandoc. Ik doar te hoopjen dat ien dei dizze ynstruksje nuttich sil wêze foar 3 en in heale minsken.

Boarne: www.habr.com

Add a comment