Paruoštas markdown2pdf sprendimas su Linux šaltinio kodu

pratarmė

Markdown yra puikus būdas parašyti trumpą straipsnį, o kartais ir gana daug teksto, naudojant paprastą kursyvą ir paryškintą formatavimą. Markdown taip pat tinka rašyti straipsnius su įtrauktu šaltinio kodu. Bet kartais norisi be pralaimėjimų, šokti su tamburinu, kad jį aplenktum į įprastą, gerai suformuotą PDF failą ir kad nekiltų problemų konvertuojant, kokių, pavyzdžiui, turėjau man - rusiškai rašyti negalima. šaltinio kodo komentarai, per ilgos eilutės neperkeliamos, o iškirpti ir kitos smulkios problemos. Instrukcija leis greitai nustatyti keitiklį md2pdf nelabai suprasdamas kaip tai veikia. Daugiau ar mažiau automatinio diegimo scenarijus yra žemiau atitinkamame skyriuje.

Mano pavyzdiniame TeX šablone konvertavimui naudojamas PSCyr šriftų paketas, kuriame yra Microsoft šriftų palaikymas, būtent "Times New Roman. Buvo tokie reikalavimai diplomui pagal GOST. Jei žinote, kaip tai padaryti, galite pakeisti šabloną pagal savo poreikius. Mano instrukcijose pirmiausia turėsite kvailioti naudodami PSCyr nustatymą „TexLive“. Sąranka atliekama „Linux Mint Mate“ paskirstyme, kitiems platinimams gali tekti „Google“ ieškoti standartiniuose jūsų sistemos „TexLive“ paketų aplankuose.

„TexLive“ diegimas

Žinoma, galite įdiegti tik būtinas šio paketo dalis. Bet asmeniškai aš buvau per daug tingus ieškoti minimalaus reikalingo darbinio įrenginio. Norėdami įsitikinti, kad viskas veikia, įdiekite visą „TexLive“ paketą. Tai vadinama texlive-pilnas ir sveria šiek tiek daugiau nei 2 gigabaitus, atminkite šį faktą. Vykdome komandą:

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

Po pakankamai ilgo diegimo galite pereiti prie kito elemento.

„Pandoc Converter“ diegimas

Pandoc yra Linux paketas, leidžiantis konvertuoti kai kuriuos teksto formatus į kitus. Jis turi daug įdomių funkcijų, kurias galite rasti internete. Mus domina tik galimybė konvertuoti žymėjimo failą į PDF. Patikrinkite, ar Pandoc įdiegtas, o jei ne, įdiekite. Pavyzdžiui taip:

user@hostname:~$ dpkg -s pandoc

Jei išvestis sako, kad ji neįdiegta, įdiekite:

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

PSCyr paketo, skirto TexLive, diegimas

Pirmiausia turite atsisiųsti PSCyr. Kol kas ji vis dar prieinama šioje vietoje nuoroda, jei skaitant straipsnį jis dėl kokių nors priežasčių nepasiekiamas, nenusiminkite, nesunku jį rasti kartu su diegimo instrukcijomis, Google įvedus kažką panašaus į "Installing PsCyr texlive". Jei jis yra, tada jums lengviau, atsisiųskite ir mes manysime, kad išpakavote archyvą į savo namų aplanką, todėl kelias į archyve esantį aplanką atrodo taip. ~/PSCyr. Tada eikite į terminalą ir iš eilės vykdykite šias komandas:

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

Tada išsiaiškinkite, kur yra vietinis katalogas texmf. Vykdome komandą:

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

Greičiausiai turite šį katalogą - /usr/local/share/texmf/, tada mes darome:

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

Na, arba jūs negalite nerimauti ir paleisti komandą, kuri nukopijuos į aplanką texmf kad ir kur ji būtų:

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

Įdiegti PSCyr šriftai, prisijunkite prie TexLive:

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

LaTeX šablonas md2pdf konvertavimui

Tiksliai neaprašysiu, kaip šis šablonas sukonfigūruotas, ir tiesiog pateiksiu jį po spoileriu be daug paaiškinimų. Pakanka pasakyti, kad jis yra gerai sukonfigūruotas, bent jau kalbant apie tai, kaip jis tvarko tekstus su daug šaltinio kodo. Jei jūsų netenkina įtraukų dydis, tarpai tarp eilučių, sekcijų ir poskyrių numeracijos trūkumas, tai, mano nuomone, gana paprasta internete „googlinti“ klausimą „kaip tai padaryti latekse ...“ ir tada tavo poreikis. Jei visai neaišku, rašykite komentaruose, pabandysiu įsigilinti į savo nustatymus prieš 4 metus ir aprašyti, kuri šablono eilutė už ką atsakinga. Tuo tarpu aš parašysiu, kaip aš tai padariau savo kompiuteryje, ir jūs galite tai pakartoti ar modifikuoti patys.

Sukurkite failą šablonas.tex kataloge /usr/share/texlive/:

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

Suteikite skaitymo leidimus:

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

atidarykite jį po šaknimi ir įklijuokite turinį, paslėptą po spoileriu žemiau:

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

Šablono turinys /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}

Failo išsaugojimas /usr/share/texlive/template.tex ir parašyti scenarijų, kuris konvertuos Makrdown failą į PDF, tame pačiame aplanke sukurdamas failą, pavadintą Markdown failu su priešdėliu .pdf, ty po konvertavimo failo pavadinimas.md pasirodys aplanke. failo pavadinimas.md.pdf. Pavadinkime scenarijų md2pdf ir pakeliui / usr / bin. Vykdykime komandas iš eilės:

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 eilutėje iš tikrųjų yra konvertavimo komanda. atkreipkite dėmesį į --from=markdown_github. „Markdown“ „GitHub“ versija yra suderinama su originalia „Markdown“, taigi, jei joje parašytas tekstas, jums nereikia jaudintis. Jei jūsų MD failas parašytas konkrečiu Markdown dialektu, perskaitykite Pandoc vadovą (man pandoc), įsitikinkite, kad tai palaiko jūsų diegimą, ir pakoreguokite /usr/bin/md2pdf jei būtina.

Scenarijus daugiau ar mažiau automatiniam diegimui

Jei tikrai nenorite nieko konfigūruoti, o turite į Ubuntu panašų platinimą, galite pabandyti sukurti scenarijų, kurio turinys paslėptas po spoileriu, ir greičiausiai viskas bus įdiegta savaime, tik nukopijuokite TeX šabloną, paskelbtą po spoileriu aukščiau, kur jums reikia patys. Atidarykite terminalą ir paleiskite:

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

Tada užpildykite jį tokiu turiniu:

$HOME/installmd2pdf.sh scenarijaus turinys

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

Paleiskite jį naudodami komandą:

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

Nepamiršk to /usr/share/texlive/template.tex turi būti užpildytas taip, kaip nurodyta skiltyje "LaTeX šablonas md2pdf konvertavimui" turinys.

Naudojant md2pdf

Tiesiog atidarykite aplanką su Markdown failu (some_file.md) terminale ir paleiskite komandą:

user@hostname:~$ md2pdf some_file.md

Dėl to aplanke pasirodys failas some_file.md.pdf.

išvada

Remdamiesi aprašytu metodu, galite sukurti bet kokio stiliaus PDF failus, taip pat galite konvertuoti kitus formatus, o ne md, bet kokius palaikomus Pandoc. Drįstu tikėtis, kad vieną dieną ši instrukcija bus naudinga 3 su puse žmonių.

Šaltinis: www.habr.com

Добавить комментарий