Datrysiad markdown2pdf parod gyda chod ffynhonnell ar gyfer Linux

Rhagair

Mae Markdown yn ffordd wych o ysgrifennu erthygl fer, ac weithiau cryn dipyn o destun, gyda fformatio italig syml a beiddgar. Mae Markdown hefyd yn dda ar gyfer ysgrifennu erthyglau gyda chod ffynhonnell wedi'i gynnwys. Ond weithiau rydych chi eisiau'n ddi-golled, dawnsio gyda thambwrîn i'w oddiweddyd i mewn i ffeil PDF reolaidd, wedi'i ffurfio'n dda, ac fel nad oes unrhyw broblemau yn ystod trosi, a oedd, er enghraifft, roedd gen i - ni allwch ysgrifennu yn Rwsieg yn sylwadau'r cod ffynhonnell, nid yw llinellau rhy hir yn cael eu trosglwyddo, ond torri a mân broblemau eraill. Bydd y cyfarwyddyd yn caniatáu ichi sefydlu'r trawsnewidydd yn gyflym md2pdf heb wir ddeall sut mae'n gweithio. Mae'r sgript ar gyfer gosodiad awtomatig mwy neu lai isod yn yr adran briodol.

Mae fy nhempled sampl TeX ar gyfer trosi yn defnyddio'r pecyn ffontiau PSCyr, sy'n cynnwys cefnogaeth ar gyfer ffontiau Microsoft, sef Times New Roman. Roedd gofynion o'r fath ar gyfer diploma yn ôl GOST. Os ydych chi'n gwybod sut, gallwch chi addasu'r templed i weddu i'ch anghenion. Yn fy nghyfarwyddiadau fy hun, yn gyntaf bydd yn rhaid i chi chwarae rhan yn y gosodiad PSCyr yn TexLive. Mae'r setup yn cael ei wneud yn y dosbarthiad Linux Mint Mate, ar gyfer dosbarthiadau eraill efallai y bydd yn rhaid i chi google y ffolderi pecyn TexLive safonol ar gyfer eich system.

Gosod TexLive

Wrth gwrs, dim ond y rhannau angenrheidiol o'r pecyn hwn y gallwch chi eu gosod. Ond yn bersonol, roeddwn yn dweud y gwir yn rhy ddiog i chwilio am y gosodiad gweithio lleiaf angenrheidiol. I wneud yn siŵr bod popeth yn gweithio, gosodwch y pecyn TexLive cyfan. Fe'i gelwir texlive-llawn ac yn pwyso ychydig yn fwy na 2 gigabeit, cadwch y ffaith hon mewn cof. Rydym yn gweithredu'r gorchymyn:

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

Ar ôl gosodiad digon hir, gallwch symud ymlaen i'r eitem nesaf.

Gosod y Pandoc Converter

Pecyn Linux yw Pandoc sy'n eich galluogi i drosi rhai fformatau testun i fformatau eraill. Mae ganddo lawer o nodweddion diddorol y gallwch chi ddod o hyd i'ch hun ar y Rhyngrwyd. Nid oes gennym ddiddordeb ond yn y posibilrwydd o drosi ffeil marcio i lawr i PDF. Gwiriwch a yw Pandoc wedi'i osod ac os na, gosodwch ef. Er enghraifft fel hyn:

user@hostname:~$ dpkg -s pandoc

Os yw'r allbwn yn dweud nad yw wedi'i osod, gosodwch:

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

Gosod y pecyn PSCyr ar gyfer TexLive

Yn gyntaf mae angen i chi lawrlwytho PSCyr. Am y tro mae'n dal i fod ar gael yn hwn cyswllt, os nad yw ar gael am ryw reswm ar adeg darllen yr erthygl, peidiwch â digalonni, mae'n hawdd dod o hyd iddo ynghyd â'r cyfarwyddiadau gosod trwy deipio rhywbeth fel "Gosod PsCyr texlive" yn Google. Os yw ar gael, yna mae'n haws i chi, lawrlwytho a byddwn yn cymryd yn ganiataol eich bod wedi dadbacio'r archif i'ch ffolder cartref ac felly mae'r llwybr i'r ffolder sydd yn yr archif yn edrych fel ~/PSCyr. Yna ewch i'r Terminal a gweithredwch y gorchmynion canlynol yn eu trefn:

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

Nesaf, darganfyddwch ble mae'r cyfeiriadur lleol wedi'i leoli texmf. Rydym yn gweithredu'r gorchymyn:

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

Mae'n debyg bod y cyfeiriadur hwn gennych chi - /usr/lleol/rhannu/texmf/, ac yna rydym yn gwneud:

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

Wel, neu ni allwch drafferthu a rhedeg gorchymyn a fydd yn copïo i ffolder texmf ble bynnag mae hi:

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

Ffontiau PSCyr wedi'u gosod, cysylltu â TexLive:

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

Templed LaTeX ar gyfer trosi md2pdf

Ni fyddaf yn disgrifio'n union sut mae'r templed hwn wedi'i ffurfweddu, a byddaf yn ei roi o dan y sbwyliwr heb lawer o esboniad. Digon yw dweud ei fod wedi'i ffurfweddu'n dda, o leiaf o ran sut mae'n trin testunau gyda llawer o god ffynhonnell. Os nad ydych chi'n fodlon â maint mewnoliadau, bylchau rhwng llinellau, diffyg rhifo adrannau ac is-adrannau, yna yn fy marn i mae'n eithaf hawdd google y cwestiwn ar y Rhyngrwyd "sut i wneud hynny yn Latex ..." a yna eich angen. Os nad yw'n glir o gwbl, ysgrifennwch y sylwadau, byddaf yn ceisio ymchwilio i fy gosodiadau fy hun 4 blynedd yn ôl a disgrifio pa linell o'r templed sy'n gyfrifol am beth. Yn y cyfamser, byddaf yn ysgrifennu i lawr sut y gwnes i hynny ar fy PC, ac rydych chi'n rhydd i'w ailadrodd neu ei addasu i chi'ch hun.

Creu ffeil template.tex yn y catalog /usr/rhannu/texlive/:

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

Rhowch ganiatâd darllen iddo:

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

agorwch ef o dan y gwraidd a gludwch y cynnwys sydd wedi'i guddio o dan y sbwyliwr isod i mewn iddo:

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

Cynnwys templed /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}

Wrthi'n cadw'r ffeil /usr/share/texlive/template.tex ac ysgrifennu sgript a fydd yn trosi'r ffeil Makrdown i PDF, gan greu yn yr un ffolder ffeil o'r enw ffeil Markdown gyda'r rhagddodiad .pdf, hynny yw, ar ôl y trosi enw ffeil.md bydd yn ymddangos yn y ffolder. enw ffeil.md.pdf. Gadewch i ni alw'r sgript md2pdf a rhoi ar y ffordd / usr / bin. Gadewch i ni weithredu'r gorchmynion yn eu trefn:

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

Mae'r 4edd llinell mewn gwirionedd yn cynnwys y gorchymyn trosi. rhoi sylw i --from=markdown_github. Mae fersiwn GitHub o Markdown yn ôl yn gydnaws â'r Markdown gwreiddiol, felly os yw'ch testun wedi'i ysgrifennu ynddo, nid oes rhaid i chi boeni. Os yw eich ffeil MD wedi'i hysgrifennu mewn tafodiaith Markdown benodol, yna darllenwch y llawlyfr Pandoc (man pandoc), gwnewch yn siŵr bod eich gweithrediad yn cael ei gefnogi ganddo, a tweak /usr/bin/md2pdf os oes angen.

Sgript ar gyfer gosodiad awtomatig mwy neu lai

Os nad ydych chi wir eisiau ffurfweddu unrhyw beth o gwbl, a bod gennych chi ddosbarthiad tebyg i Ubuntu, gallwch chi geisio creu sgript gyda'r cynnwys wedi'i guddio o dan y sbwyliwr, ac yn fwyaf tebygol y bydd popeth yn gosod ei hun, yr unig beth yw, copi y templed TeX wedi'i bostio o dan y sbwyliwr uchod lle bo angen eu hunain. Agor Terfynell a rhedeg:

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

Yna llenwch ef gyda'r cynnwys canlynol:

Mae cynnwys y sgript $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

Rhedwch ef gyda'r gorchymyn:

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

Peidiwch ag anghofio hynny /usr/share/texlive/template.tex rhaid ei llenwi fel y nodir yn yr adran "Templed LaTeX ar gyfer trosi md2pdf» cynnwys.

Gan ddefnyddio md2pdf

Agorwch y ffolder gyda'r ffeil Markdown (rhai_ffeil.md) yn y Terminal a rhedeg y gorchymyn:

user@hostname:~$ md2pdf some_file.md

O ganlyniad, bydd ffeil yn ymddangos yn y ffolder rhai_ffeil.md.pdf.

Casgliad

Yn seiliedig ar y dull a ddisgrifir, gallwch adeiladu unrhyw arddull o ffeiliau PDF, gallwch hefyd drosi fformatau eraill yn lle md, unrhyw un a gefnogir gan Pandoc. Rwy'n meiddio gobeithio y bydd y cyfarwyddyd hwn yn ddefnyddiol i 3 a hanner o bobl un diwrnod.

Ffynhonnell: hab.com

Ychwanegu sylw