Tilbúin markdown2pdf lausn með frumkóða fyrir Linux

Formáli

Markdown er frábær leið til að skrifa stutta grein, og stundum frekar mikinn texta, með einföldum skáletri og feitletruðu sniði. Markdown er líka gott til að skrifa greinar með frumkóða innifalinn. En stundum vill maður missa sig, dansa við bumbuna til að ná því yfir í venjulega, vel mótaða PDF-skrá, og svo að engin vandamál komi upp við umbreytingu, sem ég átti til dæmis í - þú getur ekki skrifað á rússnesku á athugasemdir frumkóðans, of langar línur eru ekki fluttar, heldur klippt og önnur minniháttar vandamál. Leiðbeiningin gerir þér kleift að setja upp breytirinn fljótt md2 pdf án þess að skilja almennilega hvernig það virkar. Handritið fyrir meira og minna sjálfvirka uppsetningu er fyrir neðan í viðeigandi hluta.

TeX sniðmátið mitt fyrir umbreytingu notar PSCyr leturpakkann, sem inniheldur stuðning fyrir Microsoft leturgerðir, þ.e. Times New Roman. Það voru slíkar kröfur um prófskírteini samkvæmt GOST. Ef þú veist hvernig geturðu breytt sniðmátinu til að henta þínum þörfum. Í mínum eigin leiðbeiningum verður þú fyrst að fíflast með PSCyr stillinguna í TexLive. Uppsetningin er gerð í Linux Mint Mate dreifingunni, fyrir aðrar dreifingar gætirðu þurft að googla venjulegu TexLive pakkamöppurnar fyrir kerfið þitt.

Að setja upp TexLive

Auðvitað geturðu aðeins sett upp nauðsynlega hluta þessa pakka. En persónulega var ég satt að segja of latur til að leita að lágmarks nauðsynlegri vinnuuppsetningu. Til að tryggja að allt virki skaltu setja upp allan TexLive pakkann. Það er kallað texlive-fullur og vegur aðeins meira en 2 gígabæt, hafðu þessa staðreynd í huga. Við framkvæmum skipunina:

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

Eftir nægilega langa uppsetningu geturðu haldið áfram í næsta atriði.

Uppsetning Pandoc Converter

Pandoc er Linux pakki sem gerir þér kleift að breyta sumum textasniðum í önnur. Það hefur marga áhugaverða eiginleika sem þú getur fundið sjálfur á netinu. Við höfum aðeins áhuga á möguleikanum á að breyta markdown skrá í PDF. Athugaðu hvort Pandoc sé uppsett og ef ekki, settu það upp. Til dæmis svona:

user@hostname:~$ dpkg -s pandoc

Ef úttakið segir að það sé ekki uppsett skaltu setja upp:

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

Uppsetning PSCyr pakkans fyrir TexLive

Fyrst þarftu að hlaða niður PSCyr. Í bili er það enn í boði á þessu tengill, ef þegar þú lest greinina er hún ekki tiltæk af einhverjum ástæðum, ekki örvænta, það er auðvelt að finna það ásamt uppsetningarleiðbeiningunum með því að slá inn eitthvað eins og "Installing PsCyr texlive" í Google. Ef það er tiltækt, þá er auðveldara fyrir þig, hlaðið niður og við gerum ráð fyrir að þú hafir pakkað skjalasafninu niður í heimamöppuna þína og þannig lítur slóðin að möppunni sem er í skjalasafninu út eins og ~/PSCyr. Farðu síðan í flugstöðina og framkvæmdu eftirfarandi skipanir í röð:

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

Næst skaltu finna út hvar staðbundin möppu er staðsett texmf. Við framkvæmum skipunina:

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

Líklega ertu með þessa möppu - /usr/local/share/texmf/, og þá gerum við:

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

Jæja, eða þú getur ekki nennt og keyrt skipun sem mun afrita í möppu texmf hvar sem hún er:

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

PSCyr leturgerðir uppsettar, tengdu við TexLive:

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

LaTeX sniðmát fyrir md2pdf umbreytingu

Ég mun ekki lýsa nákvæmlega hvernig þetta sniðmát er stillt og mun einfaldlega gefa það undir spoilernum án mikillar skýringa. Það er nóg að segja að það er vel stillt, að minnsta kosti hvað varðar hvernig það meðhöndlar texta með miklum frumkóða. Ef þú ert ekki sáttur við stærð inndráttar, línubil, skort á númerun hluta og undirkafla, þá er að mínu mati frekar auðvelt að googla spurninguna á netinu „hvernig á að gera það í Latex ...“ og þá þörf þína. Ef það er alls ekki skýrt, skrifaðu í athugasemdir, ég mun reyna að kafa ofan í mínar eigin stillingar fyrir 4 árum og lýsa því hvaða línu sniðmátsins ber ábyrgð á hverju. Í millitíðinni mun ég skrifa niður hvernig ég gerði það á tölvunni minni og þér er frjálst að endurtaka eða breyta því sjálfur.

Búðu til skrá template.tex í vörulistanum /usr/share/texlive/:

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

Gefðu því lesheimildir:

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

opnaðu það undir rótinni og límdu innihaldið sem er falið undir spoilernum fyrir neðan í það:

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

Sniðmátsefni /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}

Vistar skrána /usr/share/texlive/template.tex og skrifaðu handrit sem mun breyta Makrdown skránni í PDF, búa til í sömu möppu skrá sem kallast Markdown skráin með forskeytinu .pdf, það er að segja eftir umbreytinguna skráarnafn.md mun birtast í möppunni. skráarnafn.md.pdf. Köllum handritið md2 pdf og leggja á leiðina / usr / bin. Við skulum framkvæma skipanirnar í röð:

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

Fjórða línan inniheldur í raun umbreytingarskipunina. gefa gaum --from=markdown_github. GitHub útgáfan af Markdown er afturábak samhæf við upprunalega Markdown, þannig að ef textinn þinn er skrifaður í hann þarftu ekki að hafa áhyggjur. Ef MD skráin þín er skrifuð á tiltekinni Markdown mállýsku, lestu þá Pandoc handbókina (man pandoc), vertu viss um að útfærslan þín sé studd af henni og fínstilltu /usr/bin/md2pdf ef nauðsynlegt er.

Script fyrir meira og minna sjálfvirka uppsetningu

Ef þú vilt alls ekki stilla neitt, og þú ert með Ubuntu-líka dreifingu, geturðu prófað að búa til script með innihaldinu falið undir spoilernum, og líklegast mun allt setja sig upp, það eina er að afrita TeX sniðmátið sett undir spoilerinn hér að ofan þar sem þú þarft sjálfan þig. Opnaðu Terminal og keyrðu:

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

Fylltu síðan með eftirfarandi efni:

Innihald $HOME/installmd2pdf.sh handritsins

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

Keyra það með skipuninni:

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

Ekki gleyma því /usr/share/texlive/template.tex verður að fylla út eins og tilgreint er í hlutanum "LaTeX sniðmát fyrir md2pdf umbreytingu» efni.

Að nota md2pdf

Opnaðu bara möppuna með Markdown skránni (einhver_skrá.md) í flugstöðinni og keyrðu skipunina:

user@hostname:~$ md2pdf some_file.md

Fyrir vikið mun skrá birtast í möppunni einhver_skrá.md.pdf.

Ályktun

Byggt á þeirri aðferð sem lýst er, geturðu smíðað hvaða stíl sem er af PDF skjölum, þú getur líka umbreytt öðrum sniðum í stað md, hvaða sem er studd af Pandoc. Ég þori að vona að einn daginn muni þessi fræðsla nýtast 3 og hálfu fólki.

Heimild: www.habr.com

Bæta við athugasemd