předmluva
Markdown je skvělý způsob, jak napsat krátký článek a někdy i hodně textu, s jednoduchou kurzívou a tučným formátováním. Markdown je také dobrý pro psaní článků se zdrojovým kódem. Ale někdy chcete bezztrátově tančit s tamburínou, abyste ji předběhli do běžného, dobře tvarovaného PDF souboru, a aby při převodu nebyly problémy, které jsem měl například já - v ruštině se nedá psát komentáře zdrojového kódu, příliš dlouhé řádky se nepřenášejí, ale stříhají se a další drobné problémy. Instrukce vám umožní rychle nastavit převodník md2pdf aniž by skutečně pochopil, jak to funguje. Skript pro víceméně automatickou instalaci je níže v příslušné sekci.
Moje vzorová šablona TeX pro převod používá balíček písem PSCyr, který obsahuje podporu pro písma Microsoft, jmenovitě Times New Roman. Takové požadavky na diplom byly podle GOST. Pokud víte jak, můžete šablonu upravit tak, aby vyhovovala vašim potřebám. V mém vlastním návodu si budete muset nejprve pohrát s nastavením PSCyr v TexLive. Nastavení se provádí v distribuci Linux Mint Mate, pro ostatní distribuce si možná budete muset vygooglovat standardní složky balíčků TexLive pro váš systém.
Instalace TexLive
Samozřejmě si můžete nainstalovat pouze nezbytné části tohoto balíčku. Ale osobně jsem byl upřímně příliš líný hledat minimální nutnou funkční instalaci. Abyste se ujistili, že vše funguje, nainstalujte celý balíček TexLive. To se nazývá texlive-plný a váží o něco více než 2 gigabajty, mějte na paměti tuto skutečnost. Provedeme příkaz:
user@hostname:~$ sudo apt install texlive-full -y
Po dostatečně dlouhé instalaci můžete přejít k další položce.
Instalace Pandoc Converter
Pandoc je linuxový balíček, který vám umožňuje převádět některé textové formáty na jiné. Má spoustu zajímavých funkcí, které můžete najít sami na internetu. Zajímá nás pouze možnost převodu markdown souboru do PDF. Zkontrolujte, zda je nainstalován Pandoc, a pokud ne, nainstalujte jej. Například takto:
user@hostname:~$ dpkg -s pandoc
Pokud výstup říká, že není nainstalován, nainstalujte:
user@hostname:~$ sudo apt install pandoc -y
Instalace balíčku PSCyr pro TexLive
Nejprve si musíte stáhnout PSCyr. Zatím je stále k dispozici na tomto
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
Dále zjistěte, kde se nachází místní adresář texmf. Provedeme příkaz:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'
S největší pravděpodobností máte tento adresář - /usr/local/share/texmf/a pak uděláme:
user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/
No, nebo se nemůžete obtěžovat a spustit příkaz, který se zkopíruje do složky texmf kdekoli je:
user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')
Písma PSCyr nainstalována, připojte se k TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsr
LaTeXová šablona pro převod md2pdf
Nebudu popisovat, jak přesně je tato šablona nakonfigurována, a jednoduše ji dám pod spoiler bez velkého vysvětlení. Stačí říct, že je dobře nakonfigurovaný, alespoň co se týče toho, jak si poradí s texty se spoustou zdrojového kódu. Pokud nejste spokojeni s velikostí odsazení, řádkováním, chybějícím očíslováním sekcí a podsekcí, pak je podle mého názoru celkem snadné si na internetu vygooglit otázku „jak na to v Latexu...“ a pak vaše potřeba. Pokud to není vůbec jasné, napište do komentářů, pokusím se zabrousit do vlastního nastavení před 4 lety a popsat, který řádek šablony je za co zodpovědný. Mezitím si napíšu, jak jsem to udělal na svém PC, a vy si to můžete zopakovat nebo upravit.
Vytvořte soubor šablona.tex v katalogu /usr/share/texlive/:
user@hostname:~$ sudo touch /usr/share/texlive/template.tex
Dejte mu oprávnění ke čtení:
user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.tex
otevřete jej pod kořenem a vložte do něj obsah skrytý pod spoilerem níže:
user@hostname:~$ sudo nano /usr/share/texlive/template.tex
Obsah šablony /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}
Uložení souboru /usr/share/texlive/template.tex a napište skript, který převede soubor Makrdown do PDF, přičemž ve stejné složce vytvoří soubor nazvaný soubor Markdown s předponou .pdf, tedy po převodu název_souboru.md se objeví ve složce. název_souboru.md.pdf. Zavolejme scénář md2pdf a dát na cestu / usr / bin. Proveďme příkazy v pořadí:
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. řádek ve skutečnosti obsahuje příkaz převodu. Dávejte pozor na --from=markdown_github. GitHub verze Markdown je zpětně kompatibilní s původní Markdown, takže pokud je v ní napsán váš text, nemusíte se bát. Pokud je váš soubor MD napsán v určitém dialektu Markdown, přečtěte si příručku Pandoc (man pandoc
), ujistěte se, že vaše implementace je podporována, a dolaďte /usr/bin/md2pdf v případě potřeby.
Skript pro víceméně automatickou instalaci
Pokud ve skutečnosti nechcete konfigurovat vůbec nic a máte distribuci podobnou Ubuntu, můžete zkusit vytvořit skript s obsahem skrytým pod spoilerem a s největší pravděpodobností se vše nainstaluje samo, jediné je, zkopírovat šablonu TeXu umístěnou pod spoilerem výše tam, kde je potřebujete. Otevřete Terminál a spusťte:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.sh
Poté jej naplňte následujícím obsahem:
Obsah skriptu $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
Spusťte jej příkazem:
user@hostname:~$ sudo bash $HOME/installmd2pdf.sh
Nezapomeň na to /usr/share/texlive/template.tex musí být vyplněno tak, jak je uvedeno v části "LaTeXová šablona pro převod md2pdf" obsah.
Pomocí md2pdf
Stačí otevřít složku se souborem Markdown (nějaký_soubor.md) v Terminálu a spusťte příkaz:
user@hostname:~$ md2pdf some_file.md
V důsledku toho se ve složce objeví soubor nějaký_soubor.md.pdf.
Závěr
Na základě popsané metody můžete sestavit jakýkoli styl souborů PDF, můžete také převést jiné formáty místo md, jakýkoli podporovaný Pandocem. Troufám si doufat, že jednou se tento návod bude hodit 3 a půl lidem.
Zdroj: www.habr.com