Preta markdown2pdf solvo kun fontkodo por Linukso

Antaŭparolo

Markdown estas bonega maniero skribi mallongan artikolon, kaj foje sufiĉe multe da teksto, kun simpla kursiva kaj grasa formatado. Markdown ankaŭ estas bona por verki artikolojn kun fontkodo inkluzivita. Sed foje oni volas senperde, danci per tamburino por preterpasi ĝin en regulan, bone formitan PDF-dosieron, kaj por ke ne estu problemoj dum konvertiĝo, kion ekzemple mi havis - oni ne povas skribi ruse en la komentoj de la fontkodo, tro longaj linioj ne estas translokigitaj, sed tranĉitaj kaj aliaj malgrandaj problemoj. La instrukcio permesos al vi rapide agordi la konvertilon md2pdf sen vere kompreni kiel ĝi funkcias. La skripto por pli-malpli aŭtomata instalado estas sube en la taŭga sekcio.

Mia specimena TeX-ŝablono por konvertiĝo uzas la PSCyr-tiparan pakon, kiu inkluzivas subtenon por Microsoft-tiparoj, nome Times New Roman. Estis tiaj postuloj por diplomo laŭ GOST. Se vi scias kiel, vi povas modifi la ŝablonon laŭ viaj bezonoj. Laŭ miaj propraj instrukcioj, vi unue devos trompi kun la agordo PSCyr en TexLive. La agordo estas farita en la distribuo Linux Mint Mate, por aliaj distribuoj vi eble devos gugli la normajn pakajn dosierujojn de TexLive por via sistemo.

Instalante TexLive

Kompreneble, vi povas instali nur la necesajn partojn de ĉi tiu pako. Sed persone, mi estis sincere tro maldiligenta por serĉi la minimuman necesan laborinstalaĵon. Por certigi, ke ĉio funkcias, instalu la tutan pakaĵon TexLive. Ĝi nomiĝas tekstlive-plena kaj pezas iom pli ol 2 gigabajtojn, memoru ĉi tiun fakton. Ni plenumas la komandon:

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

Post sufiĉe longa instalado, vi povas daŭrigi al la sekva ero.

Instalante la Pandoc-Konvertilon

Pandoc estas Linukso-pakaĵo, kiu ebligas al vi konverti kelkajn tekstoformatojn al aliaj. Ĝi havas multajn interesajn funkciojn, kiujn vi povas trovi en la interreto. Ni interesiĝas nur pri la ebleco konverti markdown-dosieron al PDF. Kontrolu ĉu Pandoc estas instalita kaj se ne, instalu ĝin. Ekzemple tiel:

user@hostname:~$ dpkg -s pandoc

Se la eligo diras, ke ĝi ne estas instalita, instalu:

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

Instalante la PSCyr-pakaĵon por TexLive

Unue vi devas elŝuti PSCyr. Nuntempe ĝi ankoraŭ haveblas ĉe ĉi tio ligilo, se dum la legado de la artikolo ĝi ial ne disponeblas, ne malesperu, estas facile trovi ĝin kune kun la instalaj instrukcioj tajpante ion kiel "Instalado de PsCyr texlive" en Guglo. Se ĝi disponeblas, tiam estas pli facile por vi, elŝutu kaj ni supozos, ke vi malpakis la arkivon en vian hejman dosierujon kaj tiel la vojo al la dosierujo enhavita en la arkivo aspektas kiel ~/PSCyr. Poste iru al la Terminalo kaj faru la sekvajn ordonojn en sinsekvo:

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

Poste, eksciu, kie troviĝas la loka dosierujo teksmf. Ni plenumas la komandon:

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

Plej verŝajne vi havas ĉi tiun dosierujon - /usr/local/share/texmf/, kaj tiam ni faras:

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

Nu, aŭ vi ne povas ĝeni kaj ruli komandon, kiu kopios al dosierujo teksmf kie ajn ŝi estas:

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

PSCyr-tiparoj instalitaj, konektu al TexLive:

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

LaTeX-ŝablono por konvertiĝo de md2pdf

Mi ne priskribos ĝuste kiel ĉi tiu ŝablono estas agordita, kaj simple donos ĝin sub la spoiler sen multe da klarigo. Sufiĉas diri, ke ĝi estas bone agordita, almenaŭ laŭ kiel ĝi pritraktas tekstojn kun multe da fontkodo. Se vi ne kontentas pri la grandeco de indentaĵoj, interlinio, la manko de numerado de sekcioj kaj subsekcioj, tiam laŭ mi estas sufiĉe facile gugligi la demandon en Interreto "kiel fari ĝin en Latekso ..." kaj tiam via bezono. Se ĝi tute ne estas klara, skribu en la komentoj, mi provos enprofundiĝi en miajn proprajn agordojn antaŭ 4 jaroj kaj priskribi kiu linio de la ŝablono respondecas pri kio. Intertempe, mi skribos kiel mi faris ĝin sur mia komputilo, kaj vi rajtas ripeti aŭ modifi ĝin mem.

Kreu dosieron ŝablono.teks en la katalogo /usr/share/texlive/:

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

Donu al ĝi legpermesojn:

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

malfermu ĝin sub la radiko kaj algluu la enhavon kaŝitan sub la suba spoiler en ĝin:

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

Ŝablona enhavo /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}

Konservante la dosieron /usr/share/texlive/template.tex kaj skribu skripton, kiu konvertiĝos la Makrdown-dosieron al PDF, kreante en la sama dosierujo dosieron nomatan Markdown-dosieron kun la prefikso .pdf, tio estas post la konvertiĝo. dosiernomo.md aperos en la dosierujo. dosiernomo.md.pdf. Ni voku la skripton md2pdf kaj surmetis la vojon / usr / bin. Ni faru la ordonojn en sinsekvo:

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

La 4-a linio fakte enhavas la konvertan komandon. atentu --from=markdown_github. La GitHub-versio de Markdown estas malantaŭen kongrua kun la originala Markdown, do se via teksto estas skribita en ĝi, vi ne devas zorgi. Se via MD-dosiero estas skribita en specifa Markdown-dialekto, tiam legu la Pandoc-manlibron (man pandoc), certigu, ke via efektivigo estas subtenata de ĝi, kaj ĝustigu /usr/bin/md2pdf se necese.

Skripto por pli-malpli aŭtomata instalado

Se vi tute ne volas agordi ion ajn, kaj vi havas Ubuntu-similan distribuon, vi povas provi krei skripton kun la enhavo kaŝita sub la spoiler, kaj plej verŝajne ĉio instalos sin, la sola afero estas kopii. la TeX-ŝablono afiŝita sub la supra spoiler al kie vi bezonas sin. Malfermu Terminalon kaj rulu:

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

Poste plenigu ĝin per la sekva enhavo:

La enhavo de la skripto $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

Rulu ĝin per la komando:

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

Ne forgesu tion /usr/share/texlive/template.tex devas esti plenigita kiel indikite en la sekcio "LaTeX-ŝablono por konvertiĝo de md2pdf» enhavo.

Uzante md2pdf

Nur malfermu la dosierujon kun la Markdown-dosiero (iu_dosiero.md) en la Terminalo kaj rulu la komandon:

user@hostname:~$ md2pdf some_file.md

Kiel rezulto, dosiero aperos en la dosierujo iu_dosiero.md.pdf.

konkludo

Surbaze de la priskribita metodo, vi povas konstrui ajnan stilon de PDF-dosieroj, vi ankaŭ povas konverti aliajn formatojn anstataŭ md, ajnajn subtenatajn de Pandoc. Mi kuraĝas esperi, ke iam ĉi tiu instrukcio estos utila al 3 kaj duono da homoj.

fonto: www.habr.com

Aldoni komenton