Ngwọta markdown2pdf emebere ya na koodu isi mmalite maka Linux

Okwu mmalite

Markdown bụ nnukwu ụzọ iji dee edemede dị mkpụmkpụ, yana mgbe ụfọdụ ederede ogologo oge, yana nhazi dị mfe n'ụdị italics na nnukwu font. Markdown dịkwa mma maka ide akụkọ gụnyere koodu isi mmalite. Ma mgbe ụfọdụ, ịchọrọ ịnyefe ya n'ime faịlụ PDF a na-ahazi nke ọma na-enweghị mfu, na-agba egwú na ịgbà, na ka ọ ghara inwe nsogbu n'oge ntụgharị, nke, dịka ọmụmaatụ, enwere m - ị nweghị ike ide na Russian na nkwupụta. nke koodu isi mmalite, anaghị ebufe ahịrị ogologo ogologo, ma ebipụkwa obere nsogbu ndị ọzọ. Ntuziaka ga-enye gị ohere ịtọ ngwa ngwa ntụgharị md2pdf na-etinyeghị uche n'ezie ka ọ na-arụ ọrụ. Edemede maka nrụnye akpaka ma ọ bụ karịa dị n'okpuru na ngalaba kwekọrọ.

Ihe atụ TeX m atụ maka ntụgharị na-eji ngwugwu font PSCyr, nke gụnyere nkwado maka mkpụrụedemede Microsoft, ya bụ New Times Roman. Ndị a bụ ihe achọrọ maka diplọma dị ka GOST si dị. Ọ bụrụ na ị maara ka, ị nwere ike gbanwee template ka ọ dabara gị mkpa. N'ime ntuziaka m, ị ga-ebu ụzọ tinye aka na ịtọlite ​​​​PSCyr na TexLive. Emebere ntọala ahụ na nkesa Linux Mint Mate; maka nkesa ndị ọzọ, ị nwere ike google ọkọlọtọ TexLive nchekwa nchekwa maka sistemụ gị.

Ịwụnye TexLive

N'ezie, ị nwere ike ịwụnye naanị akụkụ nke ngwugwu enyere nke ịchọrọ. Mana n'onwe m, ọ dị m umengwụ n'eziokwu ịchọ nrụnye ọrụ kacha nta achọrọ. Iji hụ na ihe niile na-arụ ọrụ nke ọma, anyị wụnye ngwugwu TexLive dum. A na-akpọ ya textlive-juru ma tụọ ntakịrị ihe karịrị 2 gigabytes, buru eziokwu a n'uche. Anyị na-eme iwu:

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

Mgbe echichi zuru oke, ị nwere ike ịga n'ihu na nzọụkwụ ọzọ.

Ịwụnye ihe ntụgharị Pandoc

Pandoc bụ ngwugwu Linux na-enye gị ohere ịtụgharị ụfọdụ ụdị ederede gaa na ndị ọzọ. Ọ nwere ọtụtụ atụmatụ na-adọrọ mmasị nke ị nwere ike ịmara onwe gị na ịntanetị. Anyị nwere mmasị naanị na enwere ike ịtụgharị faịlụ markdown ka ọ bụrụ PDF. Ka anyị lelee ma arụnyere Pandoc ma ọ bụrụ na ọ bụghị, tinye ya. Dịka ọmụmaatụ dịka nke a:

user@hostname:~$ dpkg -s pandoc

Ọ bụrụ na mmepụta ahụ kwuru na etinyeghị ya, wụnye ya:

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

Ịwụnye ngwugwu PSCyr maka TexLive

Mbụ ị ga-ebudata PSCyr. Maka ugbu a ọ ka dị na nke a njikọ, Ọ bụrụ na n'oge ị na-agụ isiokwu ahụ ọ dịghị maka ihe ụfọdụ, enwela obi nkoropụ, ọ dị mfe ịchọta yana ntụziaka nwụnye site na ịpị ihe dị ka "Ịwụnye PsCyr texlive" n'ime Google. Ọ bụrụ na ọ dị, mgbe ahụ ọ dịịrị gị mfe, budata ya, anyị ga-eche na ị bupụrụ ebe nchekwa ahụ n'ime nchekwa ụlọ gị wee si otú a na-aga na folda dị na ebe nchekwa ahụ dị ka. ~/PSCyr. Mgbe ahụ gaa na Terminal ma mee iwu ndị a n'usoro:

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

Ọzọ, anyị ga-achọpụta ebe ndekọ ndekọ mpaghara dị ederede. Anyị na-eme iwu:

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

O yikarịrị ka ị nwere akwụkwọ ndekọ aha a - /usr/local/share/texmf/, wee mee:

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

Ọfọn, ma ọ bụ na ị nweghị ike inye nsogbu ma mee iwu nke ga-eṅomi ya na nchekwa ederede ebe ọ bụla ọ nọ:

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

Awụnyela mkpụrụedemede PSCyr, jikọọ na TexLive:

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

template LaTeX maka ntụgharị md2pdf

Agaghị m akọwa otu esi ahazi template a, ma ga-eweta ya n'okpuru onye na-emebi ihe na-enweghị nkọwa zuru oke. Ọ dị mma ikwu na a haziri ya nke ọma, opekata mpe n'ụzọ o si ahazi ederede nwere ọtụtụ koodu isi mmalite. Ọ bụrụ na afọghị gị afọ ojuju na nha nke indents, oghere ahịrị, enweghị ọnụọgụ nke ngalaba na nkebi, mgbe ahụ n'uche nke m ọ dị mfe Google ajụjụ a "otu esi eme na Latex ..." na mgbe ahụ mkpa gị. Ọ bụrụ na edoghị anya kpamkpam, dee na nkwupụta, m ga-agbalị ịbanye na ntọala nke m site na 4 afọ gara aga ma kọwaa nke ahịrị nke template bụ maka ihe. Ka ọ dị ugbu a, m ga-akọwa otu m si mee ya na PC m, ma ị nweere onwe gị ikwugharị ma ọ bụ gbanwee ya ka ọ dabara onwe gị.

Mepụta faịlụ template.tex na katalọgụ /usr/share/texlive/:

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

Anyị na-enye ya ikike ịgụ:

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

mepee dị ka mgbọrọgwụ wee mado n'ime ya ihe ndị dị n'ime ya ezoro ezo n'okpuru ihe nbibi n'okpuru:

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

Ọdịnaya ndebiri /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}

Chekwaa faịlụ ahụ /usr/share/texlive/template.tex wee dee edemede nke ga-agbanwe faịlụ Makrdown ka ọ bụrụ PDF, na-ekepụta n'otu nchekwa ahụ faịlụ a na-akpọ Markdown faịlụ nwere prefix .pdf, ya bụ, mgbe ntụgharị ahụ gasịrị. aha faịlụ.md ga-apụta na nchekwa aha faịlụ.md.pdf. Ka anyị kpọọ edemede ahụ md2pdf ma tinye ya n'ụzọ / usr / bin. Ka anyị mee iwu ndị a n'usoro:

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

Ahịrị nke anọ nwere n'ezie iwu ntughari. ṅaa ntị na --si =markdown_github. Ụdị GitHub nke Markdown na azụ azụ dakọtara na mbụ Markdown, yabụ ọ bụrụ na edere ederede gị na ya, ị gaghị echegbu onwe gị. Ọ bụrụ na edere faịlụ MD gị n'otu olumba nke Markdown, wee gụọ akwụkwọ ntuziaka Pandoc (man pandoc), hụ na ọ kwadoro mmejuputa iwu gị, wee tweak /usr/bin/md2pdf ọ bụrụ na ọ dị mkpa.

Ederede maka nrụnye akpaka karịa ma ọ bụ obere

Ọ bụrụ na ịchọghị ịhazi ihe ọ bụla ma ọlị, ma ị nwere nkesa dị ka Ubuntu, ị nwere ike ịgbalị ịmepụta edemede nwere ọdịnaya zoro ezo n'okpuru onye na-emebi ihe, ma eleghị anya, ihe niile ga-arụnye onwe ya, detuo template TeX. ezigara n'okpuru onye na-emebi ihe n'elu ebe ị chọrọ ya n'onwe gị. Mepee Terminal wee gbaa ọsọ:

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

Wee dejupụta ya na ọdịnaya ndị a:

Ọdịnaya nke edemede $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

Jiri iwu a mee ya:

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

Echefula nke ahụ /usr/share/texlive/template.tex a ga-ejupụta dị ka egosiri na ngalaba "template LaTeX maka ntụgharị md2pdf» ọdịnaya.

Iji md2pdf

Naanị mepee folda ahụ na faịlụ Markdown (ụfọdụ_file.md) na Terminal, wee mee iwu:

user@hostname:~$ md2pdf some_file.md

N'ihi ya, faịlụ ga-apụta na nchekwa ụfọdụ_file.md.pdf.

nkwubi

Dabere na usoro akọwara, ị nwere ike wulite ụdị ọ bụla nke faịlụ PDF; ị nwekwara ike ịtụgharị ụdị ndị ọzọ, Pandoc ọ bụla na-akwado kama md. Ana m anwa anwa inwe olileanya na otu ụbọchị ntụziaka a ga-aba uru nye mmadụ 3 na ọkara.

isi: www.habr.com

Tinye a comment