Klaargemaakte markdown2pdf-oplossing met bronkode vir Linux

voorwoord

Markdown is 'n goeie manier om 'n kort artikel te skryf, en soms heelwat teks, met eenvoudige kursief en vet formaat. Markdown is ook goed vir die skryf van artikels met bronkode ingesluit. Maar soms wil jy verliesloos, met 'n tamboeryn dans om dit in 'n gewone, goed gevormde PDF-lêer in te haal, en sodat daar geen probleme tydens omskakeling is nie, wat ek byvoorbeeld gehad het - jy kan nie in Russies skryf nie die kommentaar van die bronkode, te lang lyne word nie oorgedra nie, maar sny en ander klein probleme. Die instruksie sal jou toelaat om die omskakelaar vinnig op te stel md2 pdf sonder om regtig te verstaan ​​hoe dit werk. Die skrif vir 'n min of meer outomatiese installasie is hieronder in die toepaslike afdeling.

My voorbeeld TeX-sjabloon vir omskakeling gebruik die PSCyr-fontpakket, wat ondersteuning vir Microsoft-lettertipes insluit, naamlik Times New Roman. Daar was sulke vereistes vir 'n diploma volgens GOST. As jy weet hoe, kan jy die sjabloon verander om by jou behoeftes te pas. In my eie instruksies sal jy eers met die PSCyr-instelling in TexLive moet flous. Die opstelling word in die Linux Mint Mate-verspreiding gedoen, vir ander verspreidings sal jy dalk die standaard TexLive-pakketvouers vir jou stelsel moet google.

Installeer TexLive

Natuurlik kan u slegs die nodige dele van hierdie pakket installeer. Maar persoonlik was ek eerlikwaar te lui om te soek na die minimum nodige werkende installasie. Om seker te maak alles werk, installeer die hele TexLive-pakket. Dit word genoem tekslewe-vol en 'n bietjie meer as 2 gigagrepe weeg, hou hierdie feit in gedagte. Ons voer die opdrag uit:

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

Na 'n voldoende lang installasie, kan jy voortgaan na die volgende item.

Die installering van die Pandoc Converter

Pandoc is 'n Linux-pakket waarmee u sommige teksformate na ander kan omskakel. Dit het baie interessante kenmerke wat jy self op die internet kan vind. Ons stel net belang in die moontlikheid om 'n markdown-lêer na PDF om te skakel. Kyk of Pandoc geïnstalleer is en indien nie, installeer dit. Byvoorbeeld, soos volg:

user@hostname:~$ dpkg -s pandoc

As die uitvoer sê dat dit nie geïnstalleer is nie, installeer:

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

Die installering van die PSCyr-pakket vir TexLive

Eerstens moet jy PSCyr aflaai. Vir nou is dit nog beskikbaar by hierdie skakel, as dit ten tyde van die lees van die artikel om een ​​of ander rede nie beskikbaar is nie, moenie moed verloor nie, dit is maklik om dit saam met die installasie-instruksies te vind deur iets soos "Installing PsCyr texlive" in Google te tik. As dit beskikbaar is, dan is dit makliker vir jou, laai af en ons sal aanvaar dat jy die argief in jou tuislêer uitgepak het en dus lyk die pad na die vouer wat in die argief vervat is. ~/PSCyr. Gaan dan na die Terminal en voer die volgende opdragte in volgorde uit:

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

Vind dan uit waar die plaaslike gids geleë is teksmf. Ons voer die opdrag uit:

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

Heel waarskynlik het jy hierdie gids - /usr/local/share/texmf/, en dan doen ons:

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

Wel, of jy kan nie die moeite doen en 'n opdrag uitvoer wat na 'n gids sal kopieer nie teksmf waar sy ook al is:

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

PSCyr-lettertipes geïnstalleer, koppel aan TexLive:

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

LaTeX-sjabloon vir md2pdf-omskakeling

Ek sal nie presies beskryf hoe hierdie sjabloon opgestel is nie, en sal dit bloot onder die bederf gee sonder veel verduideliking. Dit is genoeg om te sê dat dit goed opgestel is, ten minste in terme van hoe dit tekste met baie bronkode hanteer. As jy nie tevrede is met die grootte van inkepings, lynspasiëring, die gebrek aan nommering van afdelings en onderafdelings nie, dan is dit na my mening redelik maklik om die vraag op die internet te google "hoe om dit in Latex te doen ..." en dan jou behoefte. As dit glad nie duidelik is nie, skryf in die kommentaar, ek sal 4 jaar gelede probeer delf in my eie instellings en beskryf watter reël van die sjabloon waarvoor verantwoordelik is. Intussen sal ek neerskryf hoe ek dit op my rekenaar gedoen het, en dit staan ​​jou vry om dit self te herhaal of te wysig.

Skep 'n lêer template.tex in die katalogus /usr/share/texlive/:

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

Gee dit leestoestemmings:

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

maak dit oop onder die wortel en plak die inhoud wat onder die bederf hieronder versteek is, daarin:

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

Sjablooninhoud /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}

Stoor tans die lêer /usr/share/texlive/template.tex en skryf 'n skrif wat die Makrdown-lêer na PDF sal omskakel, en skep in dieselfde vouer 'n lêer genaamd die Markdown-lêer met die voorvoegsel .pdf, dit wil sê na die omskakeling lêernaam.md sal in die gids verskyn. lêernaam.md.pdf. Kom ons noem die draaiboek md2 pdf en op die pad sit / Usr / bin. Kom ons voer die opdragte in volgorde uit:

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

Die 4de reël bevat eintlik die omskakelingsopdrag. gee aandag aan --from=markdown_github. Die GitHub-weergawe van Markdown is agteruit versoenbaar met die oorspronklike Markdown, so as jou teks daarin geskryf is, hoef jy nie bekommerd te wees nie. As jou MD-lêer in 'n spesifieke Markdown-dialek geskryf is, lees dan die Pandoc-handleiding (man pandoc), maak seker dat jou implementering daardeur ondersteun word, en pas dit aan /usr/bin/md2pdf Indien nodig.

Skrip vir min of meer outomatiese installasie

As jy glad nie regtig iets wil konfigureer nie, en jy het 'n Ubuntu-agtige verspreiding, kan jy probeer om 'n skrif te skep met die inhoud wat onder die bederf versteek is, en heel waarskynlik sal alles self installeer, die enigste ding is, kopieer die TeX-sjabloon wat onder die bederf hierbo geplaas is na waar jy hulself nodig het. Maak Terminal oop en hardloop:

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

Vul dit dan met die volgende inhoud:

Die inhoud van die $HOME/installmd2pdf.sh-skrip

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

Begin dit met die opdrag:

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

Moenie dit vergeet nie /usr/share/texlive/template.tex moet ingevul word soos aangedui in die afdeling "LaTeX-sjabloon vir md2pdf-omskakeling» inhoud.

Gebruik md2pdf

Maak net die gids oop met die Markdown-lêer (sommige_lêer.md) in die Terminal en voer die opdrag uit:

user@hostname:~$ md2pdf some_file.md

As gevolg hiervan sal 'n lêer in die gids verskyn sommige_lêer.md.pdf.

Gevolgtrekking

Gebaseer op die beskryf metode, kan jy enige styl van PDF-lêers bou, jy kan ook ander formate in plaas van md omskep, enige wat deur Pandoc ondersteun word. Ek waag dit om te hoop dat hierdie instruksie eendag nuttig sal wees vir 3 en 'n half mense.

Bron: will.com

Voeg 'n opmerking