Valmis markdown2pdf lahendus lähtekoodiga Linuxile

Eessõna

Markdown on suurepärane viis lühikese ja mõnikord üsna suure teksti kirjutamiseks lihtsa kaldkirjas ja paksus vormingus. Markdown sobib hästi ka lähtekoodiga artiklite kirjutamiseks. Kuid mõnikord tahad kaotamatult tantsida tamburiiniga, et see tavaliseks, hästi vormistatud PDF-failiks ületada ja et teisendamisel ei tekiks probleeme, mis näiteks mul oli - vene keeles ei saa kirjutada lähtekoodi kommentaare, liiga pikki ridu üle ei kanta, vaid lõigatud ja muud väiksemad probleemid. Juhend võimaldab teil muunduri kiiresti seadistada md2pdf saamata aru, kuidas see tegelikult töötab. Enam-vähem automaatse installi skript on allpool vastavas jaotises.

Minu teisendamiseks mõeldud TeX-i näidismall kasutab PSCyr fondipaketti, mis sisaldab Microsofti fontide tuge, nimelt Times New Roman. Diplomile olid sellised nõuded vastavalt GOST-ile. Kui teate, kuidas, saate malli vastavalt oma vajadustele muuta. Minu juhistes peate esmalt TexLive'i PSCyr seadistustega lolli tegema. Seadistamine toimub Linux Mint Mate distributsioonis, teiste distributsioonide jaoks peate võib-olla otsima oma süsteemi standardseid TexLive'i paketi kaustu.

TexLive'i installimine

Loomulikult saate installida ainult selle paketi vajalikud osad. Kuid isiklikult olin ausalt öeldes liiga laisk, et otsida minimaalselt vajalikku töötavat paigaldust. Et kõik toimiks, installige kogu TexLive'i pakett. Seda nimetatakse texlive-täis ja kaalub veidi rohkem kui 2 gigabaiti, pidage seda asjaolu meeles. Täidame käsu:

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

Pärast piisavalt pikka installimist saate jätkata järgmise üksuse juurde.

Pandoci muunduri installimine

Pandoc on Linuxi pakett, mis võimaldab teil mõnda tekstivormingut teisendada. Sellel on palju huvitavaid funktsioone, mille leiate Internetist. Oleme huvitatud ainult võimalusest teisendada allahindlusfail PDF-iks. Kontrollige, kas Pandoc on installitud ja kui mitte, installige see. Näiteks nii:

user@hostname:~$ dpkg -s pandoc

Kui väljund ütleb, et see pole installitud, installige:

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

PSCyr paketi installimine TexLive'i jaoks

Kõigepealt peate alla laadima PSCyr. Praegu on see siin veel saadaval link, kui artikli lugemise ajal pole see mingil põhjusel saadaval, ärge heitke meelt, seda on lihtne koos paigaldusjuhistega leida, sisestades Google'isse midagi sellist nagu "PsCyr texlive install". Kui see on saadaval, on see teile lihtsam, laadige alla ja me eeldame, et olete arhiivi oma kodukausta lahti pakkinud ja seega näeb arhiivis sisalduva kausta tee välja selline ~/PSCyr. Seejärel minge terminali ja käivitage järjestikku järgmised 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

Järgmisena uurige, kus asub kohalik kataloog texmf. Täidame käsu:

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

Tõenäoliselt on teil see kataloog - /usr/local/share/texmf/ja siis teeme:

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

Noh, või te ei saa viitsida ja käivitada käsk, mis kopeerib kausta texmf kus iganes ta on:

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

Installitud PSCyr-fondid, ühendage TexLive'iga:

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

LaTeX-i mall md2pdf-i teisendamiseks

Ma ei kirjelda täpselt, kuidas see mall on konfigureeritud, ja annan selle lihtsalt spoileri alla ilma suurema selgituseta. Piisab, kui öelda, et see on hästi konfigureeritud, vähemalt selles osas, kuidas ta käsitleb palju lähtekoodi sisaldavaid tekste. Kui teid ei rahulda taande suurus, reavahe, jaotiste ja alajaotiste nummerdamatus, siis minu meelest on Internetist üsna lihtne googeldada küsimus “kuidas seda teha lateksis ...” ja siis sinu vajadus. Kui see pole üldse selge, kirjutage kommentaaridesse, proovin süveneda enda 4 aasta tagustesse seadistustesse ja kirjeldada, milline malli rida mille eest vastutab. Seniks panen kirja, kuidas ma seda oma arvutis tegin ja võite seda ise korrata või muuta.

Looge fail mall.tex kataloogis /usr/share/texlive/:

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

Andke sellele lugemisõigus:

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

avage see juure all ja kleepige sellesse alloleva spoileri alla peidetud sisu:

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}

Faili salvestamine /usr/share/texlive/template.tex ja kirjutage skript, mis teisendab Makrdowni faili PDF-iks, luues samas kaustas faili nimega Markdown fail eesliitega .pdf, st pärast teisendamist failinimi.md kuvatakse kaustas. failinimi.md.pdf. Kutsume skripti md2pdf ja pane teele / usr / bin. Täitkem käsud järjekorras:

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

4. rida sisaldab tegelikult teisenduskäsku. pööra tähelepanu --from=markdown_github. Markdowni GitHubi versioon ühildub tagasi originaalse Markdowniga, nii et kui teie tekst on sellesse kirjutatud, ei pea te muretsema. Kui teie MD-fail on kirjutatud kindlas Markdowni dialektis, lugege Pandoci juhendit (man pandoc), veenduge, et see teie rakendamist toetaks, ja kohandage /usr/bin/md2pdf kui vajalik.

Skript enam-vähem automaatseks installimiseks

Kui te ei soovi üldse midagi seadistada ja teil on Ubuntu-laadne distributsioon, võite proovida luua skripti, mille sisu on peidetud spoileri alla ja tõenäoliselt installitakse kõik ise, ainus asi on kopeerida ülaloleva spoileri alla postitatud TeX-i mall sinna, kuhu vajate. Avage terminal ja käivitage:

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

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

Skripti $HOME/installmd2pdf.sh sisu

#!/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äivitage see käsuga:

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

Ära seda unusta /usr/share/texlive/template.tex tuleb täita vastavalt jaotisele "LaTeX-i mall md2pdf-i teisendamiseks" sisu.

Kasutades md2pdf

Lihtsalt avage kaust Markdowni failiga (mingi_fail.md) terminalis ja käivitage käsk:

user@hostname:~$ md2pdf some_file.md

Selle tulemusena ilmub kausta fail mingi_fail.md.pdf.

Järeldus

Kirjeldatud meetodi põhjal saate koostada mis tahes stiilis PDF-faile, samuti saate md asemel teisendada muid vorminguid, mis tahes Pandoci toetatud vorminguid. Julgen loota, et ühel päeval on see õpetus kasulik 3 ja poolele inimesele.

Allikas: www.habr.com

Lisa kommentaar