Andam nga gihimo nga markdown2pdf nga solusyon nga adunay source code alang sa Linux

Pasiuna

Ang Markdown usa ka maayong paagi sa pagsulat sa usa ka mubo nga artikulo, ug usahay daghang teksto, nga adunay yano nga italic ug maisugon nga pag-format. Ang Markdown maayo usab alang sa pagsulat sa mga artikulo nga adunay gilakip nga source code. Apan usahay gusto nimo nga dili mawala, sayaw gamit ang tamburin aron maabutan kini sa usa ka regular, maayo nga pagkaporma nga PDF file, ug aron wala’y mga problema sa panahon sa pagkakabig, nga, pananglitan, naa ko - dili ka makasulat sa Russian sa ang mga komento sa source code, taas kaayo nga mga linya wala gibalhin, apan giputol ug uban pang gagmay nga mga problema. Ang panudlo magtugot kanimo nga dali nga ma-set up ang converter md2pdf nga wala gyud makasabut kung giunsa kini molihok. Ang script alang sa mas daghan o dili kaayo awtomatik nga pag-instalar anaa sa ubos sa angay nga seksyon.

Ang akong sample nga template sa TeX alang sa pagkakabig naggamit sa PSCyr font package, nga naglakip sa suporta alang sa mga font sa Microsoft, nga mao Panahon sa Bag-ong Romano. Adunay ingon nga mga kinahanglanon alang sa usa ka diploma sumala sa GOST. Kung nahibal-an nimo kung giunsa, mahimo nimong usbon ang template aron mohaum sa imong mga panginahanglan. Sa akong kaugalingon nga mga panudlo, kinahanglan nimo nga magbinuang una sa setting sa PSCyr sa TexLive. Ang setup gihimo sa Linux Mint Mate distribution, alang sa ubang mga distribusyon mahimo nimo nga i-google ang standard TexLive package folders para sa imong sistema.

Pag-instalar sa TexLive

Siyempre, mahimo nimong i-install ang gikinahanglan nga mga bahin niini nga pakete. Apan sa personal, ako prangka nga tapolan sa pagpangita alang sa minimum nga gikinahanglan nga pag-instalar sa pagtrabaho. Aron masiguro nga ang tanan molihok, i-install ang tibuuk nga pakete sa TexLive. Gitawag kini textlive-puno ug motimbang ug gamay sa 2 gigabytes, hinumdomi kini nga kamatuoran. Gipatuman namon ang mando:

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

Human sa igong taas nga pag-instalar, makapadayon ka sa sunod nga aytem.

Pag-instalar sa Pandoc Converter

Ang Pandoc usa ka Linux package nga nagtugot kanimo sa pag-convert sa pipila ka mga format sa teksto ngadto sa uban. Kini adunay daghang makapaikag nga mga bahin nga makit-an nimo ang imong kaugalingon sa Internet. Interesado lang kami sa posibilidad sa pag-convert sa markdown file ngadto sa PDF. Susiha kung na-install ang Pandoc ug kung wala, i-install kini. Pananglitan sama niini:

user@hostname:~$ dpkg -s pandoc

Kung ang output nag-ingon nga wala kini ma-install, i-install:

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

Pag-instalar sa PSCyr package para sa TexLive

Una kinahanglan nimo i-download ang PSCyr. Sa pagkakaron kini anaa pa niini link, kung sa panahon sa pagbasa sa artikulo dili kini magamit sa usa ka hinungdan, ayaw pagkawalay paglaum, dali nga makit-an kini kauban ang mga panudlo sa pag-install pinaagi sa pag-type sa usa ka butang sama sa "Pag-install sa PsCyr texlive" sa Google. Kung kini anaa, nan kini mas sayon ​​​​alang kanimo, pag-download ug kami maghunahuna nga imong gi-unpack ang archive sa imong home folder ug sa ingon ang agianan sa folder nga anaa sa archive morag ~/PSCyr. Dayon adto sa Terminal ug ipatuman ang mosunod nga mga sugo sa han-ay:

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

Sunod, hibal-i kung diin nahimutang ang lokal nga direktoryo texmf. Gipatuman namon ang mando:

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

Lagmit aduna kay kini nga direktoryo - /usr/local/share/texmf/, ug dayon atong buhaton:

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

Aw, o dili ka makasamok ug magpadagan sa usa ka mando nga magkopya sa usa ka folder texmf bisan asa siya:

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

Gi-install ang mga font sa PSCyr, konektado sa TexLive:

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

LaTeX template para sa md2pdf nga pagkakabig

Dili nako ihulagway kung giunsa kini nga template gi-configure, ug ihatag lang kini sa ilawom sa spoiler nga wala’y daghang katin-awan. Igo na ang pag-ingon nga kini maayo nga na-configure, labing menos sa mga termino kung giunsa kini pagdumala sa mga teksto nga adunay daghang source code. Kung dili ka matagbaw sa gidak-on sa mga indent, line spacing, ang kakulang sa pag-numero sa mga seksyon ug mga subsection, nan sa akong opinyon dali ra nga i-google ang pangutana sa Internet "unsaon kini buhaton sa Latex ..." ug unya ang imong panginahanglan. Kung dili kini klaro, isulat sa mga komento, sulayan nako nga susihon ang akong kaugalingon nga mga setting 4 ka tuig na ang milabay ug ihulagway kung unsang linya sa template ang responsable sa kung unsa. Sa kasamtangan, akong isulat kung giunsa nako kini gibuhat sa akong PC, ug libre ka nga sublion o usbon kini alang sa imong kaugalingon.

Paghimo og file template.tex sa katalogo /usr/share/texlive/:

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

Hatagi kini og mga permiso sa pagbasa:

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

ablihi kini ilalom sa gamut ug idikit ang mga sulod nga gitago ubos sa spoiler sa ubos niini:

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

Ang sulod sa template /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}

Pagtipig sa file /usr/share/texlive/template.tex ug pagsulat og script nga mag-convert sa Makrdown file ngadto sa PDF, nga maghimo sa samang folder og file nga gitawag og Markdown file nga adunay prefix .pdf, nga mao, human sa conversion ngalan sa file.md makita sa folder. filename.md.pdf. Tawgon nato ang script md2pdf ug ibutang sa dalan / usr / bin. Atong ipatuman ang mga sugo sa pagkasunodsunod:

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

Ang ika-4 nga linya sa tinuud naglangkob sa sugo sa pagkakabig. paminaw sa --from=markdown_github. Ang GitHub nga bersyon sa Markdown pabalik nga nahiuyon sa orihinal nga Markdown, busa kung ang imong teksto gisulat niini, dili ka kinahanglan mabalaka. Kung ang imong MD file gisulat sa usa ka piho nga Markdown dialect, unya basaha ang manwal sa Pandoc (man pandoc), siguroha nga ang imong pagpatuman gisuportahan niini, ug pag-tweak /usr/bin/md2pdf kung kinahanglan.

Script alang sa mas daghan o dili kaayo awtomatik nga pag-instalar

Kung dili gyud nimo gusto nga i-configure ang bisan unsang butang, ug adunay ka usa ka pag-apod-apod nga sama sa Ubuntu, mahimo nimong sulayan ang paghimo usa ka script nga adunay sulud nga gitago sa ilawom sa spoiler, ug lagmit nga ang tanan mag-install sa kaugalingon, ang bugtong butang mao, kopyaha. ang template sa TeX nga gibutang sa ilawom sa spoiler sa ibabaw kung diin nimo kinahanglan ang ilang kaugalingon. Ablihi ang Terminal ug pagdagan:

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

Dayon pun-a kini sa mosunod nga sulod:

Ang sulod sa $HOME/installmd2pdf.sh script

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

Pagdalagan kini gamit ang command:

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

Ayaw kalimti kana /usr/share/texlive/template.tex kinahanglan nga mapuno ingon nga gipakita sa seksyon "LaTeX template para sa md2pdf nga pagkakabigΒ»sulod.

Paggamit sa md2pdf

Ablihi lang ang folder gamit ang Markdown file (some_file.md) sa Terminal ug padagana ang sugo:

user@hostname:~$ md2pdf some_file.md

Ingon usa ka sangputanan, usa ka file ang makita sa folder some_file.md.pdf.

konklusyon

Pinasukad sa gihulagway nga pamaagi, mahimo ka magtukod bisan unsang istilo sa mga file nga PDF, mahimo ka usab magbag-o sa ubang mga format imbes sa md, bisan unsang gisuportahan sa Pandoc. Nangahas ako nga maglaum nga usa ka adlaw kini nga panudlo magamit sa 3 ug tunga nga mga tawo.

Source: www.habr.com

Idugang sa usa ka comment