Ojutu markdown2pdf ti a ti ṣetan pẹlu koodu orisun fun Lainos

Ọrọ iṣaaju

Markdown jẹ ọna nla lati kọ nkan kukuru kan, ati nigbakan pupọ pupọ ti ọrọ, pẹlu italic ti o rọrun ati ọna kika igboya. Markdown tun dara fun kikọ awọn nkan pẹlu koodu orisun to wa. Ṣugbọn nigbami o fẹ lati padanu lainidi, jó pẹlu tambourine lati bori rẹ sinu deede, faili PDF ti o ṣẹda daradara, ati pe ko si awọn iṣoro lakoko iyipada, eyiti, fun apẹẹrẹ, Mo ni - iwọ ko le kọ ni Russian ni awọn asọye ti koodu orisun, awọn laini gigun ko ni gbigbe, ṣugbọn ge ati awọn iṣoro kekere miiran. Ilana naa yoo gba ọ laaye lati ṣeto oluyipada ni kiakia md2pdf lai gan agbọye bi o ti ṣiṣẹ. Iwe afọwọkọ fun diẹ sii tabi kere si fifi sori ẹrọ laifọwọyi wa ni isalẹ ni apakan ti o yẹ.

Awoṣe TeX mi fun iyipada nlo package fonti PSCyr, eyiti o pẹlu atilẹyin fun awọn nkọwe Microsoft, eyun Times titun roman. Awọn ibeere bẹ wa fun iwe-ẹkọ giga gẹgẹbi GOST. Ti o ba mọ bii, o le ṣe atunṣe awoṣe lati ba awọn iwulo rẹ baamu. Ninu awọn ilana ti ara mi, iwọ yoo kọkọ ni lati tàn ni ayika pẹlu eto PSCyr ni TexLive. Iṣeto naa ti ṣe ni pinpin Mint Mate Linux, fun awọn ipinpinpin miiran o le ni lati google awọn folda package TexLive boṣewa fun eto rẹ.

Fifi TexLive sori ẹrọ

Nitoribẹẹ, o le fi awọn ẹya pataki ti package yii sori ẹrọ nikan. Ṣugbọn tikalararẹ, Mo jẹ ọlẹ pupọ lati wa fun fifi sori ẹrọ iṣẹ ṣiṣe ti o kere ju. Lati rii daju pe ohun gbogbo n ṣiṣẹ, fi gbogbo package TexLive sori ẹrọ. O ti wa ni a npe ni textlive-kikun ati ki o wọn kekere kan diẹ sii ju 2 gigabytes, pa o daju yi ni lokan. A ṣe aṣẹ naa:

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

Lẹhin fifi sori ẹrọ gigun to, o le tẹsiwaju si nkan atẹle.

Fifi Pandoc Converter

Pandoc jẹ package Linux kan ti o fun ọ laaye lati yi awọn ọna kika ọrọ diẹ si awọn miiran. O ni ọpọlọpọ awọn ẹya ti o nifẹ ti o le rii ararẹ lori Intanẹẹti. A nifẹ nikan ni iṣeeṣe ti iyipada faili isamisi si PDF. Ṣayẹwo boya Pandoc ti fi sori ẹrọ ati ti kii ba ṣe bẹ, fi sii. Fun apẹẹrẹ bii eyi:

user@hostname:~$ dpkg -s pandoc

Ti iṣẹjade ba sọ pe ko fi sii, fi sii:

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

Fifi package PSCyr fun TexLive

Ni akọkọ o nilo lati ṣe igbasilẹ PSCyr. Fun bayi o tun wa ni eyi ọna asopọ, Ti o ba jẹ ni akoko kika nkan naa ko wa fun idi kan, maṣe ni ibanujẹ, o rọrun lati wa pẹlu awọn ilana fifi sori ẹrọ nipa titẹ nkan bi "Fifi PsCyr texlive" sori Google. Ti o ba wa, lẹhinna o rọrun fun ọ, ṣe igbasilẹ ati pe a yoo ro pe o ti ṣii iwe-ipamọ sinu folda ile rẹ ati nitorinaa ọna si folda ti o wa ninu ile-ipamọ naa dabi. ~/PSCyr. Lẹhinna lọ si Terminal ki o ṣiṣẹ awọn aṣẹ wọnyi ni ọkọọkan:

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

Nigbamii, wa ibi ti itọsọna agbegbe wa textmf. A ṣe aṣẹ naa:

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

O ṣeese julọ o ni itọsọna yii - /usr/agbegbe/pin/texmf/ati lẹhinna a ṣe:

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

O dara, tabi o ko le ṣe wahala ati ṣiṣe aṣẹ ti yoo daakọ si folda kan textmf nibikibi ti o wa:

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

Awọn nkọwe PSCyr ti fi sori ẹrọ, sopọ si TexLive:

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

Awoṣe LaTeX fun iyipada md2pdf

Mo ti yoo ko apejuwe gangan bi awoṣe yi ti wa ni tunto, ati ki o yoo nìkan fun o labẹ awọn apanirun lai Elo alaye. O to lati sọ pe o ti tunto daradara, o kere ju ni awọn ofin ti bii o ṣe n kapa awọn ọrọ pẹlu koodu orisun pupọ. Ti o ko ba ni itẹlọrun pẹlu iwọn awọn indents, aye laini, aini nọmba ti awọn apakan ati awọn apakan, lẹhinna ninu ero mi o rọrun pupọ lati google ibeere naa lori Intanẹẹti “bii o ṣe le ṣe ni Latex…” ati lẹhinna nilo rẹ. Ti ko ba han rara, kọ ninu awọn asọye, Emi yoo gbiyanju lati ṣawari sinu awọn eto ti ara mi ni ọdun 4 sẹhin ati ṣapejuwe iru ila ti awoṣe jẹ lodidi fun kini. Lakoko, Emi yoo kọ bi mo ṣe ṣe lori PC mi, ati pe o ni ominira lati tun tabi yipada fun ararẹ.

Ṣẹda faili kan awoṣe.tex ninu awọn katalogi /usr/pin/texlive/:

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

Fun ni awọn igbanilaaye kika:

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

ṣii labẹ gbongbo ki o lẹẹmọ awọn akoonu ti o farapamọ labẹ apanirun ni isalẹ sinu rẹ:

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

Akoonu awoṣe /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}

Nfi faili pamọ /usr/pin/texlive/template.tex ki o si kọ iwe afọwọkọ kan ti yoo yi faili Makrdown pada si PDF, ṣiṣẹda ninu folda kanna faili kan ti a pe ni faili Markdown pẹlu asọtẹlẹ .pdf, iyẹn ni, lẹhin iyipada naa. filename.md yoo han ninu folda. filename.md.pdf. Jẹ ki a pe iwe afọwọkọ naa md2pdf ki o si fi si ọna / usr / oniyika. Jẹ ki a ṣiṣẹ awọn aṣẹ ni ọkọọkan:

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

Laini 4th ni gangan ni aṣẹ iyipada ninu. san ifojusi si --lati =markdown_github. Ẹya GitHub ti Markdown jẹ sẹhin ni ibamu pẹlu Markdown atilẹba, nitorinaa ti ọrọ rẹ ba ti kọ sinu rẹ, o ko ni lati ṣàníyàn. Ti faili MD rẹ ba ti kọ sinu ede-ede Markdown kan pato, lẹhinna ka iwe ilana Pandoc (man pandoc), rii daju pe imuse rẹ ni atilẹyin nipasẹ rẹ, ati tweak /usr/bin/md2pdf ti o ba wulo.

Akosile fun diẹ ẹ sii tabi kere si fifi sori ẹrọ laifọwọyi

Ti o ko ba fẹ gaan lati tunto ohunkohun rara, ati pe o ni pinpin bii Ubuntu, o le gbiyanju ṣiṣẹda iwe afọwọkọ kan pẹlu awọn akoonu ti o farapamọ labẹ apanirun, ati pe o ṣee ṣe pe ohun gbogbo yoo fi sori ẹrọ funrararẹ, ohun kan ni, daakọ awoṣe TeX ti a fiweranṣẹ labẹ apanirun loke si ibiti o nilo ara wọn. Ṣii Terminal ki o ṣiṣẹ:

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

Lẹhinna fọwọsi pẹlu akoonu atẹle:

Awọn akoonu ti $HOME/installmd2pdf.sh akosile

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

Ṣiṣe pẹlu aṣẹ:

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

Maṣe gbagbe pe /usr/pin/texlive/template.tex gbọdọ kun ni bi itọkasi ni apakan "Awoṣe LaTeX fun iyipada md2pdf»akoonu.

Lilo md2pdf

Kan ṣii folda pẹlu faili Markdown (diẹ ninu_file.md) ni Terminal ati ṣiṣe aṣẹ naa:

user@hostname:~$ md2pdf some_file.md

Bi abajade, faili kan yoo han ninu folda naa diẹ ninu_file.md.pdf.

ipari

Da lori ọna ti a ṣalaye, o le kọ eyikeyi ara ti awọn faili PDF, o tun le ṣe iyipada awọn ọna kika miiran dipo md, eyikeyi atilẹyin nipasẹ Pandoc. Mo ni igboya lati nireti pe ni ọjọ kan itọnisọna yii yoo wulo fun eniyan 3 ati idaji.

orisun: www.habr.com

Fi ọrọìwòye kun