Gotovo markdown2pdf rješenje s izvornim kodom za Linux

predgovor

Markdown je izvrstan način za pisanje kratkog članka, a ponekad i dosta teksta, s jednostavnim kurzivom i podebljanim oblikovanjem. Markdown je također dobar za pisanje članaka s uključenim izvornim kodom. Ali ponekad želite bez gubitaka, plesati s tamburicom da je prestignete u pravilnu, dobro oblikovanu PDF datoteku, i tako da nema problema tijekom pretvorbe, što sam, na primjer, ja imao - ne možete pisati na ruskom u komentari izvornog koda, predugi redovi se ne prenose, ali se režu i drugi manji problemi. Uputa će vam omogućiti brzo postavljanje pretvarača md2pdf a da zapravo ne razumijem kako to funkcionira. Skripta za više-manje automatsku instalaciju nalazi se ispod u odgovarajućem odjeljku.

Moj primjer TeX predloška za pretvorbu koristi paket fontova PSCyr, koji uključuje podršku za Microsoftove fontove, naime Times New Roman. Postojali su takvi zahtjevi za diplomu prema GOST-u. Ako znate kako, možete izmijeniti predložak kako bi odgovarao vašim potrebama. Prema mojim vlastitim uputama, prvo ćete se morati zezati s postavkom PSCyr u TexLiveu. Postavljanje se vrši u distribuciji Linux Mint Mate, za druge distribucije možda ćete morati guglati standardne TexLive mape paketa za vaš sustav.

Instalacija TexLive

Naravno, možete instalirati samo potrebne dijelove ovog paketa. Ali osobno, bio sam iskreno previše lijen da potražim minimalno potrebnu radnu instalaciju. Kako biste bili sigurni da sve radi, instalirajte cijeli paket TexLive. To se zove texlive-pun i teži nešto više od 2 gigabajta, imajte tu činjenicu na umu. Izvršavamo naredbu:

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

Nakon dovoljno duge instalacije, možete prijeći na sljedeću stavku.

Instaliranje Pandoc Converter-a

Pandoc je Linux paket koji vam omogućuje pretvaranje nekih formata teksta u druge. Ima mnogo zanimljivih značajki koje možete sami pronaći na internetu. Zanima nas samo mogućnost pretvaranja markdown datoteke u PDF. Provjerite je li Pandoc instaliran i ako nije, instalirajte ga. Na primjer ovako:

user@hostname:~$ dpkg -s pandoc

Ako izlaz kaže da nije instaliran, instalirajte:

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

Instalacija PSCyr paketa za TexLive

Prvo morate preuzeti PSCyr. Za sada je još dostupan na ovom link, ako u trenutku čitanja članka iz nekog razloga nije dostupan, ne očajavajte, lako ga je pronaći zajedno s uputama za instalaciju ako u Google upišete nešto poput "Instaliranje PsCyr texlive". Ako je dostupno, onda vam je lakše, preuzmite i pretpostavit ćemo da ste arhivu raspakirali u svoju početnu mapu i tako put do mape koja se nalazi u arhivi izgleda ovako ~/PSCyr. Zatim idite na terminal i redom izvršite sljedeće naredbe:

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

Zatim saznajte gdje se nalazi lokalni imenik texmf. Izvršavamo naredbu:

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

Najvjerojatnije imate ovaj imenik - /usr/local/share/texmf/, a zatim radimo:

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

Pa, ili se ne možete gnjaviti i pokrenuti naredbu koja će kopirati u mapu texmf gdje god da je:

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

Instalirani PSCyr fontovi, spojite se na TexLive:

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

LaTeX predložak za md2pdf konverziju

Neću točno opisivati ​​kako je ovaj predložak konfiguriran, već ću ga jednostavno dati ispod spojlera bez puno objašnjenja. Dovoljno je reći da je dobro konfiguriran, barem što se tiče načina na koji obrađuje tekstove s puno izvornog koda. Ako niste zadovoljni veličinom uvlaka, proredom, nedostatkom numeriranja odjeljaka i pododjeljaka, onda je po mom mišljenju prilično lako guglati pitanje na internetu "kako to učiniti u Latexu ..." i onda tvoja potreba. Ako uopće nije jasno, napišite u komentarima, pokušat ću proniknuti u vlastite postavke prije 4 godine i opisati koji je redak predloška za što odgovoran. U međuvremenu ću napisati kako sam to napravio na svom PC-u, a vi to možete sami ponoviti ili modificirati.

Stvorite datoteku predložak.tex u katalogu /usr/share/texlive/:

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

Dajte mu dopuštenja za čitanje:

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

otvorite ga ispod roota i u njega zalijepite sadržaj skriven ispod spojlera ispod:

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

Sadržaj predloška /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}

Spremanje datoteke /usr/share/texlive/template.tex i napišite skriptu koja će datoteku Makrdown pretvoriti u PDF, stvarajući u istoj mapi datoteku pod nazivom Markdown datoteka s prefiksom .pdf, tj. nakon pretvorbe naziv datoteke.md pojavit će se u mapi. naziv datoteke.md.pdf. Nazovimo scenarij md2pdf i staviti na put / usr / bin. Izvršimo naredbe redom:

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

Četvrti red zapravo sadrži naredbu konverzije. obrati pozornost na --from=markdown_github. GitHub verzija Markdowna unatrag je kompatibilna s originalnim Markdownom, tako da ako je vaš tekst napisan u njoj, ne morate brinuti. Ako je vaša MD datoteka napisana na određenom Markdown dijalektu, pročitajte Pandoc priručnik (man pandoc), provjerite podržava li vašu implementaciju i prilagodite /usr/bin/md2pdf ako je potrebno.

Skripta za više-manje automatsku instalaciju

Ako baš i ne želite ništa konfigurirati, a imate distribuciju sličnu Ubuntuu, možete pokušati napraviti skriptu sa sadržajem skrivenim ispod spojlera i najvjerojatnije će se sve samo od sebe instalirati, jedino što je, kopirajte TeX predložak objavljen pod gornjim spojlerom tamo gdje vam trebaju. Otvorite terminal i pokrenite:

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

Zatim ga ispunite sljedećim sadržajem:

Sadržaj skripte $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

Pokrenite ga naredbom:

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

Ne zaboravi to /usr/share/texlive/template.tex mora se ispuniti kako je navedeno u odjeljku "LaTeX predložak za md2pdf konverziju» sadržaj.

Korištenje md2pdf

Samo otvorite mapu s datotekom Markdown (neka_datoteka.md) u terminalu i pokrenite naredbu:

user@hostname:~$ md2pdf some_file.md

Kao rezultat toga, datoteka će se pojaviti u mapi neka_datoteka.md.pdf.

Zaključak

Na temelju opisane metode, možete izgraditi bilo koji stil PDF datoteka, također možete pretvoriti druge formate umjesto md, sve koje podržava Pandoc. Usuđujem se nadati da će jednog dana ova uputa biti od koristi za 3 i pol osobe.

Izvor: www.habr.com

Dodajte komentar