Predgovor
Markdown je odličan 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 poželite da bez gubitka, zaplešete uz tamburu da je prestignete u običan, dobro formiran PDF fajl, i da ne bude problema tokom konverzije, što sam, na primer, imao - ne možete pisati na ruskom na komentari izvornog koda, predugački redovi se ne prenose, već seku i drugi manji problemi. Upute će vam omogućiti da brzo postavite pretvarač md2pdf bez stvarnog razumijevanja kako to funkcionira. Skripta za manje-više automatsku instalaciju je ispod u odgovarajućem odjeljku.
Moj uzorak TeX šablona za konverziju koristi paket fontova PSCyr, koji uključuje podršku za Microsoft fontove, tj. Times New Roman. Postojali su takvi zahtjevi za diplomu prema GOST-u. Ako znate kako, možete modificirati predložak kako bi odgovarao vašim potrebama. U mojim vlastitim uputama, prvo ćete se morati zezati sa postavkom PSCyr u TexLiveu. Podešavanje je urađeno u Linux Mint Mate distribuciji, za druge distribucije možda ćete morati guglati standardne foldere TexLive paketa za vaš sistem.
Instaliranje TexLive
Naravno, možete instalirati samo neophodne dijelove ovog paketa. Ali lično, iskreno, bio sam previše lijen da tražim minimalnu potrebnu radnu instalaciju. Da biste bili sigurni da sve radi, instalirajte cijeli TexLive paket. To se zove texlive-full i teži nešto više od 2 gigabajta, imajte ovu činjenicu na umu. Izvršavamo naredbu:
user@hostname:~$ sudo apt install texlive-full -y
Nakon dovoljno duge instalacije, možete preći na sljedeću stavku.
Instalacija Pandoc Convertera
Pandoc je Linux paket koji vam omogućava da neke tekstualne formate pretvorite u druge. Ima puno zanimljivih funkcija koje možete pronaći na internetu. Zanima nas samo mogućnost konverzije markdown datoteke u PDF. Provjerite je li Pandoc instaliran, a 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
Instaliranje PSCyr paketa za TexLive
Prvo morate preuzeti PSCyr. Za sada je još uvijek dostupan na ovom mjestu
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'
Najvjerovatnije imate ovaj direktorij - /usr/local/share/texmf/, a onda radimo:
user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/
Pa, ili se ne možete truditi i pokrenuti naredbu koja će kopirati u mapu texmf gde god da je:
user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')
PSCyr fontovi su instalirani, povežite se na TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsr
LaTeX šablon za md2pdf konverziju
Neću opisivati tačno kako je ovaj šablon konfigurisan, već ću ga jednostavno dati ispod spojlera bez mnogo objašnjenja. Dovoljno je reći da je dobro konfigurisan, barem u smislu načina na koji obrađuje tekstove s puno izvornog koda. Ako niste zadovoljni veličinom uvlaka, razmakom između redova, nedostatkom numeracije odjeljaka i pododjeljaka, onda je po mom mišljenju prilično lako proguglati pitanje na internetu "kako to učiniti u latexu..." i onda vaša potreba. Ako uopće nije jasno, napišite u komentarima, pokušat ću se udubiti u vlastita podešavanja prije 4 godine i opisati koja je linija šablona za šta odgovorna. U međuvremenu ću napisati kako sam to uradio na svom računaru, a vi to možete sami ponoviti ili modifikovati.
Kreirajte fajl template.tex u katalogu /usr/share/texlive/:
user@hostname:~$ sudo touch /usr/share/texlive/template.tex
Dajte mu dozvole za čitanje:
user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.tex
otvorite ga ispod korijena i u njega zalijepite sadržaj sakriven ispod spojlera:
user@hostname:~$ sudo nano /usr/share/texlive/template.tex
Sadržaj šablona /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}
Čuvanje datoteke /usr/share/texlive/template.tex i napišite skriptu koja će pretvoriti datoteku Makrdown u PDF, kreirajući u istoj mapi datoteku pod nazivom Markdown datoteka s prefiksom .pdf, odnosno nakon konverzije ime datoteke.md će se pojaviti u folderu. ime datoteke.md.pdf. Pozovimo skriptu md2pdf i stavite 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 za konverziju. obratite pažnju na --from=markdown_github. GitHub verzija Markdowna 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 priručnik za Pandoc (man pandoc
), uvjerite se da je vaša implementacija podržana od njega i prilagodite /usr/bin/md2pdf ako je potrebno.
Skripta za manje-više automatsku instalaciju
Ako ne želite baš ništa da konfigurišete, a imate distribuciju nalik Ubuntu, možete pokušati da kreirate skriptu sa sadržajem skrivenim ispod spojlera i najverovatnije će se sve instalirati samo od sebe, jedino kopirajte TeX šablon postavljen ispod spojlera iznad tamo gdje vam je potrebno. Otvorite Terminal i pokrenite:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.sh
Zatim ga popunite 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 zaboravite to /usr/share/texlive/template.tex mora biti popunjen kako je navedeno u odjeljku "LaTeX šablon za md2pdf konverziju» sadržaj.
Korištenje md2pdf
Samo otvorite fasciklu sa datotekom Markdown (some_file.md) u terminalu i pokrenite naredbu:
user@hostname:~$ md2pdf some_file.md
Kao rezultat, datoteka će se pojaviti u mapi some_file.md.pdf.
zaključak
Na osnovu opisane metode, možete napraviti bilo koji stil PDF datoteka, također možete konvertirati druge formate umjesto md, bilo koji podržan od Pandoc-a. Usuđujem se da se nadam da će jednog dana ovo uputstvo biti korisno za 3 i po osobe.
izvor: www.habr.com