Valmis markdown2pdf-ratkaisu lähdekoodilla Linuxille

Esipuhe

Markdown on loistava tapa kirjoittaa lyhyt artikkeli ja joskus melko paljon tekstiä yksinkertaisella kursivoitulla ja lihavoidulla muotoilulla. Markdown sopii myös lähdekoodin sisältävien artikkeleiden kirjoittamiseen. Mutta joskus haluat hävittämättä tanssia tamburiinilla ohittaaksesi sen tavalliseksi, hyvin muotoilluksi PDF-tiedostoksi ja jotta muunnoksen aikana ei tule ongelmia, joita esimerkiksi minulla oli - et voi kirjoittaa venäjäksi lähdekoodin kommentit, liian pitkiä rivejä ei siirretä, vaan leikkaus ja muita pieniä ongelmia. Ohjeiden avulla voit määrittää muuntimen nopeasti md2pdf ymmärtämättä miten se toimii. Enemmän tai vähemmän automaattisen asennuksen komentosarja on alla sopivassa osiossa.

Esimerkki TeX-mallissani muuntamista varten käyttää PSCyr-fonttipakettia, joka sisältää tuen Microsoftin kirjasimille, nimittäin Times New Roman. GOST: n mukaan oli sellaisia ​​​​vaatimuksia tutkintotodistukselle. Jos tiedät miten, voit muokata mallia tarpeidesi mukaan. Omissa ohjeissani sinun täytyy ensin huijata TexLiven PSCyr-asetusta. Asennus tehdään Linux Mint Mate -jakelussa, muissa jakeluissa saatat joutua googlettamaan järjestelmän standardit TexLive -pakettikansiot.

TexLiven asennus

Voit tietysti asentaa vain tarvittavat osat tästä paketista. Mutta henkilökohtaisesti olin suoraan sanottuna liian laiska etsimään tarvittavaa vähimmäistyötä. Varmista, että kaikki toimii, asenna koko TexLive-paketti. Sitä kutsutaan texlive-täynä ja painaa hieman yli 2 gigatavua, pidä tämä tosiasia mielessä. Suoritamme komennon:

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

Riittävän pitkän asennuksen jälkeen voit siirtyä seuraavaan kohtaan.

Pandoc Converterin asennus

Pandoc on Linux-paketti, jonka avulla voit muuntaa joitain tekstimuotoja toisiin. Siinä on paljon mielenkiintoisia ominaisuuksia, jotka löydät Internetistä. Olemme kiinnostuneita vain mahdollisuudesta muuntaa merkintätiedosto PDF-muotoon. Tarkista, onko Pandoc asennettu, ja jos ei, asenna se. Esimerkiksi näin:

user@hostname:~$ dpkg -s pandoc

Jos tuloste sanoo, että sitä ei ole asennettu, asenna:

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

TexLiven PSCyr-paketin asentaminen

Ensin sinun on ladattava PSCyr. Toistaiseksi se on edelleen saatavilla tästä linkki, jos artikkelia lukiessasi se ei jostain syystä ole saatavilla, älä epäröi, se on helppo löytää asennusohjeiden mukana kirjoittamalla Googleen jotain "Installing PsCyr texlive". Jos se on saatavilla, niin se on sinulle helpompaa, lataa ja oletamme, että olet purkanut arkiston kotikansioosi ja siten polku arkiston sisältämään kansioon näyttää tältä ~/PSCyr. Siirry sitten terminaaliin ja suorita seuraavat komennot järjestyksessä:

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

Ota seuraavaksi selville, missä paikallinen hakemisto sijaitsee texmf. Suoritamme komennon:

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

Todennäköisesti sinulla on tämä hakemisto - /usr/local/share/texmf/ja sitten teemme:

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

No, tai et voi vaivautua ja suorittaa komentoa, joka kopioidaan kansioon texmf missä hän on:

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

PSCyr-fontit asennettu, yhdistä TexLiveen:

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

LaTeX-malli md2pdf-muunnokselle

En kuvaile tarkasti, kuinka tämä malli on konfiguroitu, ja annan sen yksinkertaisesti spoilerin alle ilman paljon selityksiä. Riittää, kun sanotaan, että se on hyvin konfiguroitu, ainakin sen suhteen, kuinka se käsittelee tekstejä, joissa on paljon lähdekoodia. Jos et ole tyytyväinen sisennysten kokoon, riviväliin, osien ja alaosien numeroinnin puutteeseen, niin mielestäni on melko helppoa googlettaa Internetistä kysymys "miten se tehdään lateksilla ..." ja sitten tarpeesi. Jos se ei ole ollenkaan selvää, kirjoita kommentteihin, yritän syventyä omiin asetuksiini 4 vuotta sitten ja kuvata, mikä mallin rivi on vastuussa mistä. Sillä välin kirjoitan ylös, kuinka tein sen tietokoneellani, ja voit vapaasti toistaa tai muokata sitä itse.

Luo tiedosto malli.tex luettelossa /usr/share/texlive/:

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

Anna sille lukuoikeudet:

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

avaa se juuren alle ja liitä siihen alla olevan spoilerin alle piilotettu sisältö:

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

Mallin sisältö /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}

Tallenna tiedosto /usr/share/texlive/template.tex ja kirjoita komentosarja, joka muuntaa Makrdown-tiedoston PDF-muotoon ja luo samaan kansioon Markdown-tiedoston, jonka etuliite on .pdf, eli muuntamisen jälkeen. tiedostonimi.md tulee näkyviin kansioon. tiedostonimi.md.pdf. Kutsutaan käsikirjoitusta md2pdf ja laita tielle / Usr / bin. Suoritetaan komennot järjestyksessä:

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

4. rivi sisältää itse asiassa muunnoskomennon. kiinnitä huomiota --from=markdown_github. Markdownin GitHub-versio on taaksepäin yhteensopiva alkuperäisen Markdownin kanssa, joten jos tekstisi on kirjoitettu siihen, sinun ei tarvitse huolehtia. Jos MD-tiedostosi on kirjoitettu tietyllä Markdown-murteella, lue Pandoc-käyttöopas (man pandoc), varmista, että se tukee toteutustasi, ja säädä /usr/bin/md2pdf tarvittaessa.

Käsikirjoitus enemmän tai vähemmän automaattiseen asennukseen

Jos et todellakaan halua määrittää mitään ja sinulla on Ubuntu-tyyppinen jakelu, voit yrittää luoda skriptin, jonka sisältö on piilotettu spoilerin alle, ja todennäköisesti kaikki asentuu itsestään, ainoa asia on kopioida yllä olevan spoilerin alle lähetetty TeX-malli sinne, missä tarvitset itsesi. Avaa terminaali ja suorita:

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

Täytä se sitten seuraavalla sisällöllä:

$HOME/installmd2pdf.sh-komentosarjan sisältö

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

Suorita se komennolla:

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

Älä unohda, että /usr/share/texlive/template.tex tulee täyttää kohdassa "LaTeX-malli md2pdf-muunnokselle" sisältö.

Käytä md2pdf

Avaa vain kansio Markdown-tiedoston kanssa (some_file.md) terminaalissa ja suorita komento:

user@hostname:~$ md2pdf some_file.md

Tämän seurauksena kansioon ilmestyy tiedosto some_file.md.pdf.

Johtopäätös

Kuvatun menetelmän perusteella voit rakentaa minkä tahansa tyylisiä PDF-tiedostoja, voit myös muuntaa muita muotoja md:n sijaan, mitä tahansa Pandocin tukemaa. Uskallan toivoa, että jonain päivänä tästä ohjeesta on hyötyä 3 ja puolelle ihmiselle.

Lähde: will.com

Lisää kommentti