Valmis lahendus markdown2pdf koos lÀhtekoodiga Linuxile

EessÔna

Markdown on suurepĂ€rane viis kirjutada vĂ€ikest artiklit ja vahel ka piisavalt mahukat teksti, kasutades lihtsat vormindamist nagu kaldkiri ja rasvane kiri. Samuti sobib Markdown hĂ€sti artiklite kirjutamiseks, kus sisaldub lĂ€htekood. Kuid mĂ”nikord tahaks selle ilma kaotusteta ja tantsimista tavalisse, hĂ€sti vormindatud PDFi failina ĂŒle kanda ja et poleks probleeme konverteerimisel, nagu nĂ€iteks mul oli - ei saanud kirjutada venekeelselt koodi kommentaarides, liiga pikad read ei murrdu, vaid katkestatakse ja muud pisiprobleemid. Juhend vĂ”imaldab kiiresti konverteri seadistada. md2pdf ilma eriti sisse minemata, kuidas see töötab. Skript automaatseks installimiseks on toodud allpool vastavas osas.

Minu TeX mall konverteerimiseks kasutab PSCyr fondipaketti, mis sisaldab Microsofti fondide tuge, nimelt Times New Roman. Sellised olid nĂ”udmised diplomi kohta vastavalt GOSTile. Kui oskate, vĂ”ite mallist oma vajaduste jaoks muuta. Minu juhendis tuleb eelnevalt natuke vaeva nĂ€ha PSCyr seadistamisega TexLives. Seadistamine toimub Linux Mint Mate jaotuses, teiste jaotuste puhul vĂ”ib olla vajalik otsida TexLive paketi standardseid kaustasid teie sĂŒsteemis.

TexLive installimine

Muidugi vĂ”ib installida ainult vajalikud osad sellest paketist. Kuid isiklikult oli mul avatud laiskust otsida minimaalset vajalikku töökeskkonda. Et kĂ”ik kindlasti toimiks, installime kogu TexLive paketi. Selle nimi on texlive-full ja kaalub veidi ĂŒle 2 gigabaiti, pidage seda meeles. TĂ€idame kĂ€su:

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

PÀrast piisavalt pikkade installimist saame liikuda jÀrgmise punkti juurde.

Pandoc konverteri installimine

Pandoc on Linuxi pakett, mis vÔimaldab teisendada teatud tekiformaate teistesse. Selles on palju huvitavaid vÔimalusi, millega saate ise internetis tutvuda. Meid huvitab vaid vÔimalus konverteerida markdown fail PDF-ks. Kontrollime, kas Pandoc on installitud, ja kui ei, siis installime selle. NÀiteks nii:

user@hostname:~$ dpkg -s pandoc

Kui vÀljundis on kirjas, et ei ole installitud - installime:

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

PSCyr paketi installimine TexLives

Esialgu tuleb alla laadida PSCyr. Praegu on see veel saadaval siit. lingil, kui te loete seda artiklit ja see mingil pĂ”hjusel ei ole saadaval, Ă€rge meeleheidet laske, seda on lihtne leida koos installatsioonijuhisega, otsides Google'ist midagi sellist nagu „PsCyr texlive'i installimine“. Kui see on saadaval, siis on teil lihtsam, laadige alla ja oletame, et olete arhivi lahti pakkunud oma kodukaustas, seega kaust, mis sisaldab arhivi, nĂ€eb vĂ€lja nagu ~\/PSCyr. Siis avame Terminali ja tĂ€idame jĂ€rjestikku kĂ€sud:

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

Edasi saame teada, kus asub lokaalne kataloog texmf. TÀidame kÀsu:

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

TĂ”enĂ€oliselt on see kataloog teil — /usr/local/share/texmf/, ja siis tĂ€idame:

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

VĂ”i vĂ”ite ka mitte vaevuda ja tĂ€ita kĂ€sku, mis kopeerib selle kausta texmf kus iganes see nĂŒĂŒd on:

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

PSCyr font on installitud, ĂŒhendame TexLive'iga:

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

LaTeX mall md2pdf konverteerimiseks

Ma ei hakka kirjeldama, kuidas see mall tĂ€pselt seadistatud on, vaid lihtsalt toon selle vĂ€lja peidetud sisuna ning ei lisa erilisi selgitusi. Piisab, kui öelda, et see on ĂŒsna hĂ€sti seadistatud, vĂ€hemalt nii, kuidas see töötleb tekste, kus on palju allika koodi. Kui te ei ole rahul reavahede, vahemaa ja jaotuste numbrite puudumisega, siis minu arvates on seda piisavalt lihtne internetis otsida kĂŒsimusega „kuidas Latexis teha
“ ja edasi vastavalt oma vajadustele. Kui on tĂ€iesti arusaamatu, kirjutage kommentaaridesse, pĂŒĂŒan meenutada oma nelja aasta taguseid seadistusi ning selgitada, milline malli rida mille eest vastutab. Seniks toon vĂ€lja, kuidas tegin mina oma arvutis, ja teie vĂ”ite kas korrata vĂ”i muuta seda vastavalt enda soovile.

Looge fail template.tex kaustas /usr/share/texlive/:

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

Anname sellele lugemisÔiguse:

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

avatakse root'iga ja sisestame sinna peidetud sisu alloleva spolleri all:

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

Malli sisu \/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}

Salvestame faili /usr/share/texlive/template.tex ja kirjutame skripti, mis konverteerib Markdown faili PDF-iks, luues samasse kausta faili, mille nimi on Markdown faili nimi koos '.pdf' lÔpuga, st pÀrast konversiooni filename.md kaustas ilmub filename.md.pdf. Nimetame skripti md2pdf ja paneme selle teele /usr/bin. TÀidame jÀrjestikku kÀsud:

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

Neljas rida sisaldab tegelikult konversioonikĂ€su. Pange tĂ€hele —from=markdown_githubGitHubi Markdowni versioon on tagasiĂŒhilduv originaalse Markdowniga, seega kui teie tekst on kirjutatud sellel, siis ei pea muretsema. Kui teie MD-fail on kirjutatud spetsiifilises Markdowni dialektis, siis tutvuge Pandoci juhendiga (man pandoc), veenduge, et teie rakendust toetatakse, ja tehke vajadusel muudatused. /usr/bin/md2pdf .

Skript enam-vÀhem automaatseks installimiseks

Kui te ei soovi ĂŒldse seadistamisega tegeleda ja teil on Ubuntu-tĂŒĂŒpi jaotamine, vĂ”ite proovida luua skripti, mille sisu on peidetud spoilerisse, ja tĂ”enĂ€oliselt installitakse kĂ”ik automaatselt, ainus asi, TeX-mall, mis on ĂŒles laaditud ĂŒlaltspoilerisse, tuleb teil ise Ă”igesse kohta kopeerida. Avage Terminal ja tĂ€itke:

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

SeejÀrel tÀitke see jÀrgmise sisuga:

Skripti sisu $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

KÀitage seda kÀsuga:

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

Ärge unustage, et /usr/share/texlive/template.tex tuleb tĂ€ita sellel jaotisel „LaTeX mall md2pdf konverteerimiseks” olevale sisule.

md2pdf kasutamine

Lihtsalt avage kaust, kus asub Markdowni fail (some_file.md), ja sisestage kÀsk:

user@hostname:~$ md2pdf some_file.md

Tulemuseks peaks olema kaustas fail some_file.md.pdf.

KokkuvÔte

Kirjeldatud meetodi pÔhjal on vÔimalik luua igasuguseid PDF-failide stiile ning samuti saab teisendada muid formaate, mis on Pandoc'i poolt toetatud. Loodan, et see juhend on kunagi kasulik 3,5 inimesele.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster