Fäerdeg markdown2pdf Léisung mat Quellcode fir Linux

Viruerteel

Markdown ass e super Wee fir e kuerzen Artikel ze schreiwen, an heiansdo zimlech laangen Text, mat einfacher Formatéierung a Form vun Kursiv an décke Schrëft. Markdown ass och gutt fir Artikelen ze schreiwen déi Quellcode enthalen. Awer heiansdo wëllt Dir et an eng regulär, gutt formatéiert PDF-Datei ouni Verloscht transferéieren, mat enger Tambourin danzen, a sou datt et keng Probleemer bei der Konversioun gëtt, déi, zum Beispill, ech hat - Dir kënnt net op Russesch an de Kommentarer schreiwen vum Quellcode ginn ze laang Linnen net iwwerdroen, an aner kleng Problemer ginn ofgeschnidden. D'Instruktioune erlaabt Iech de Converter séier opzestellen md2 pdf ouni wierklech ze verdéiwen wéi et funktionnéiert. De Skript fir eng méi oder manner automatesch Installatioun ass hei ënnen an der entspriechender Rubrik.

Mäi Beispill TeX Template fir Konversioun benotzt de PSCyr Schrëft Package, deen Ënnerstëtzung fir Microsoft Schrëften enthält, nämlech Times New Roman. Dëst waren d'Ufuerderunge fir en Diplom no GOST. Wann Dir wësst wéi, kënnt Dir d'Schabloun änneren fir Äre Besoinen ze passen. A menger Instruktioune musst Dir als éischt mat PSCyr an TexLive opstellen. De Setup gëtt an der Linux Mint Mate Verdeelung gemaach; fir aner Verdeelungen musst Dir vläicht déi Standard TexLive Package Ordner fir Äre System google.

TexLive installéieren

Natierlech kënnt Dir nëmmen déi Deeler vun engem bestëmmte Package installéieren deen Dir braucht. Awer perséinlech war ech éierlech ze faul fir no der minimaler erfuerderter Aarbechtsinstallatioun ze sichen. Fir sécherzestellen datt alles richteg funktionnéiert, installéiere mir de ganze TexLive Package. Et gëtt genannt textlive-voll a waacht e bësse méi wéi 2 gigabytes, halen dës Tatsaach am Kapp. Mir féieren de Kommando aus:

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

No enger laang genuch Installatioun kënnt Dir op de nächste Schrëtt weidergoen.

Installatioun vum Pandoc Konverter

Pandoc ass e Linux Package deen Iech erlaabt e puer Textformater an anerer ze konvertéieren. Et huet vill interessant Features, déi Dir Iech um Internet vertraut kënnt. Mir sinn nëmmen interesséiert an der Méiglechkeet eng Markdown Datei op PDF ze konvertéieren. Loosst eis kucken ob Pandoc installéiert ass a wann net, installéiere se. Zum Beispill esou:

user@hostname:~$ dpkg -s pandoc

Wann d'Ausgab seet datt et net installéiert ass, installéiere se:

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

Installéiere vum PSCyr Package fir TexLive

Als éischt musst Dir PSCyr eroflueden. Fir de Moment ass et nach ëmmer verfügbar bei dësem Link, Wann et beim Liesen vum Artikel aus irgendege Grënn net verfügbar ass, verzweifelt net, et ass einfach mat Installatiounsinstruktiounen ze fannen andeems Dir eppes wéi "Installing PsCyr texlive" op Google tippt. Wann et verfügbar ass, dann ass et méi einfach fir Iech, luet et erof a mir huelen un datt Dir d'Archiv an Ären Dossier doheem ausgepackt hutt an domat de Wee an den Dossier am Archiv ausgesäit wéi ~/PSCyr. Da gitt op den Terminal a fuert d'Befehle sequentiell aus:

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

Als nächst wäerte mir erausfannen wou de lokale Verzeichnis läit texmf. Mir féieren de Kommando aus:

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

Wahrscheinlech hutt Dir dëse Verzeechnes - /usr/local/share/texmf/, an da maache mir aus:

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

Gutt, oder Dir kënnt net stéieren an de Kommando ausféieren deen et an den Dossier kopéiert texmf wou och ëmmer si ass:

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

PSCyr Schrëften sinn installéiert, verbënnt mat TexLive:

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

LaTeX Schabloun fir md2pdf Konversioun

Ech wäert net beschreiwen wéi genau dës Schabloun konfiguréiert ass, a wäert et einfach ënner engem Spoiler presentéieren ouni vill Erklärung. Et ass genuch ze soen datt et gutt konfiguréiert ass, op d'mannst an der Aart a Weis wéi et Texter mat vill Quellcode veraarbecht. Wann Dir net zefridden sidd mat der Gréisst vun den Abriecher, Zeilenabstand, Mangel un Nummeréierung vu Sektiounen an Ënnersektiounen, dann ass et menger Meenung no ganz einfach d'Fro "Wéi am Latex ze maachen ..." ze Google an dann Äre Besoin. Wann et komplett onkloer ass, schreift an de Kommentaren, ech probéieren a meng eegen Astellunge vu viru 4 Joer ze verdéiwen fir ze beschreiwen wéi eng Zeil vun der Schabloun fir wat verantwortlech ass. An der Tëschenzäit wäert ech beschreiwen wéi ech et op mengem PC gemaach hunn, an Dir sidd fräi et ze widderhuelen oder ze änneren fir Iech selwer ze passen.

Schafen eng Datei template.tex am Katalog /usr/share/texlive/:

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

Mir ginn et liesen Permissiounen:

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

öffnen als Root a setzt den Inhalt verstoppt ënner dem Spoiler hei drënner:

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

Schabloun Inhalt /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}

Späichert d'Datei /usr/share/texlive/template.tex a schreift e Skript deen d'Makrdown-Datei op PDF konvertéiert, an deemselwechten Dossier eng Datei mam Numm Markdown-Datei mam .pdf Präfix erstellen, dat heescht no der Konversioun Dateinumm.md wäert am Dossier schéngen Dateinumm.md.pdf. Loosst eis de Skript nennen md2 pdf an huet et laanscht de Wee / usr / bin. Loosst eis d'Befehle sequenziell ausféieren:

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

Déi 4. Zeil enthält tatsächlech de Konversiounskommando. oppassen op --from=markdown_github. D'GitHub Versioun vu Markdown ass no hannen kompatibel mam Original Markdown, also wann Ären Text dra geschriwwe gëtt, musst Dir Iech keng Suergen maachen. Wann Är MD-Datei an engem spezifeschen Dialekt vu Markdown geschriwwe gëtt, da liest de Pandoc Handbuch (man pandoc), vergewëssert Iech datt Är Ëmsetzung dovun ënnerstëtzt gëtt, a tweak /usr/bin/md2pdf wann néideg.

Skript fir méi oder manner automatesch Installatioun

Wann Dir wierklech näischt wëllt konfiguréieren, an Dir hutt eng Ubuntu-ähnlech Verdeelung, kënnt Dir probéieren e Skript ze kreéieren mat dem Inhalt ënner dem Spoiler verstoppt, a wahrscheinlech wäert alles selwer installéieren, kopéiert just d'Tex Template ënnert dem Spoiler uewen gepost wou Dir et selwer braucht. Open Terminal a lafen:

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

Da fëllt et mat de folgenden Inhalt:

Inhalter vum Skript $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

Run et mam Kommando:

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

Vergiesst dat net /usr/share/texlive/template.tex muss ausgefëllt ginn wéi an der Rubrik uginn "LaTeX Schabloun fir md2pdf Konversioun» Inhalt.

Benotzt md2pdf

Maacht just den Dossier mat der Markdown Datei op (puer_file.md) am Terminal, a lafen de Kommando:

user@hostname:~$ md2pdf some_file.md

Als Resultat erschéngt eng Datei am Dossier puer_file.md.pdf.

Konklusioun

Baséierend op der beschriwwener Method, kënnt Dir all Stil vun PDF Dateien bauen; Dir kënnt och aner Formater konvertéieren, all ënnerstëtzt vu Pandoc, anstatt md. Ech getraut ze hoffen, datt enges Daags dës Instruktioun fir 3 an en halleft Leit nëtzlech ass.

Source: will.com

Setzt e Commentaire