предговор
Markdown е чудесен начин да напишете кратка статия, а понякога и доста текст, с просто курсивно и удебелено форматиране. Markdown също е добър за писане на статии с включен изходен код. Но понякога искате да танцувате без загуба, да танцувате с тамбура, за да го изпреварите в обикновен, добре оформен PDF файл и така че да няма проблеми по време на конвертирането, което например имах - не можете да пишете на руски на коментарите на изходния код, твърде дългите редове не се прехвърлят, но се изрязват и други дребни проблеми. Инструкцията ще ви позволи бързо да настроите конвертора md2pdf без наистина да разбира как работи. Скриптът за повече или по-малко автоматична инсталация е по-долу в съответния раздел.
Моят примерен TeX шаблон за преобразуване използва PSCyr пакета шрифтове, който включва поддръжка за шрифтове на Microsoft, а именно Times New Roman. Имаше такива изисквания за диплома според GOST. Ако знаете как, можете да промените шаблона, за да отговаря на вашите нужди. В моите собствени инструкции първо ще трябва да се заблуждавате с настройката PSCyr в TexLive. Настройката се извършва в дистрибуцията на Linux Mint Mate, за други дистрибуции може да се наложи да търсите в Google стандартните папки на пакета TexLive за вашата система.
Инсталиране на TexLive
Разбира се, можете да инсталирате само необходимите части от този пакет. Но лично мен ме мързеше откровено да търся минимално необходимата работеща инсталация. За да сте сигурни, че всичко работи, инсталирайте целия пакет TexLive. Нарича се texlive-пълен и тежи малко повече от 2 гигабайта, имайте предвид този факт. Изпълняваме командата:
user@hostname:~$ sudo apt install texlive-full -y
След достатъчно дълга инсталация можете да продължите към следващия елемент.
Инсталиране на Pandoc Converter
Pandoc е Linux пакет, който ви позволява да конвертирате някои текстови формати в други. Има много интересни функции, които можете да намерите сами в интернет. Интересуваме се само от възможността за конвертиране на файл с маркдаун в PDF. Проверете дали Pandoc е инсталиран и ако не, инсталирайте го. Например така:
user@hostname:~$ dpkg -s pandoc
Ако изходът казва, че не е инсталиран, инсталирайте:
user@hostname:~$ sudo apt install pandoc -y
Инсталиране на пакета PSCyr за TexLive
Първо трябва да изтеглите PSCyr. Засега все още е наличен в това
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
След това разберете къде се намира локалната директория texmf. Изпълняваме командата:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'
Най-вероятно имате тази директория - /usr/local/share/texmf/, и след това правим:
user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/
Е, или можете да не се притеснявате и да изпълните команда, която ще копира в папка texmf където и да е тя:
user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')
Инсталирани PSCyr шрифтове, свържете се с TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsr
LaTeX шаблон за преобразуване в md2pdf
Няма да описвам точно как е конфигуриран този шаблон и просто ще го дам под спойлера без много обяснения. Достатъчно е да се каже, че е добре конфигуриран, поне по отношение на това как обработва текстове с много изходен код. Ако не сте доволни от размера на отстъпите, разстоянието между редовете, липсата на номериране на секции и подсекции, тогава според мен е доста лесно да потърсите в Google въпроса в Интернет „как да го направя в латекс ...“ и тогава вашата нужда. Ако изобщо не е ясно, пишете в коментарите, ще се опитам да се поровя в собствените си настройки преди 4 години и да опиша кой ред от шаблона отговаря за какво. Междувременно ще напиша как го направих на моя компютър и вие сте свободни да го повторите или промените за себе си.
Създайте файл template.tex в каталога /usr/share/texlive/:
user@hostname:~$ sudo touch /usr/share/texlive/template.tex
Дайте му разрешения за четене:
user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.tex
отворете го под корена и поставете в него съдържанието, скрито под спойлера по-долу:
user@hostname:~$ sudo nano /usr/share/texlive/template.tex
Съдържание на шаблона /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}
Запишете файла /usr/share/texlive/template.tex и напишете скрипт, който ще преобразува файла Makrdown в PDF, създавайки в същата папка файл, наречен файл Markdown с префикс .pdf, т.е. след преобразуването име на файл.md ще се появи в папката. име на файл.md.pdf. Нека извикаме сценария md2pdf и пуснати на път / ЮЕсАр / хамбар. Нека изпълним последователно командите:
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
Четвъртият ред всъщност съдържа командата за преобразуване. обръщам внимание на --from=markdown_github. GitHub версията на Markdown е обратно съвместима с оригиналния Markdown, така че ако вашият текст е написан в нея, не е нужно да се притеснявате. Ако вашият MD файл е написан на специфичен диалект на Markdown, прочетете ръководството на Pandoc (man pandoc
), уверете се, че внедряването ви се поддържа от него и настройте /usr/bin/md2pdf ако е необходимо.
Скрипт за повече или по-малко автоматична инсталация
Ако изобщо не искате да конфигурирате нищо и имате дистрибуция, подобна на Ubuntu, можете да опитате да създадете скрипт със съдържанието, скрито под спойлера, и най-вероятно всичко ще се инсталира само, единственото нещо е, копирайте шаблона на TeX, публикуван под спойлера по-горе, до мястото, където имате нужда. Отворете терминала и стартирайте:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.sh
След това го попълнете със следното съдържание:
Съдържанието на скрипта $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
Стартирайте го с командата:
user@hostname:~$ sudo bash $HOME/installmd2pdf.sh
Не забравяй това /usr/share/texlive/template.tex трябва да се попълни, както е посочено в раздел "LaTeX шаблон за преобразуване в md2pdf» съдържание.
Използване на md2pdf
Просто отворете папката с файла Markdown (някакъв_файл.md) в терминала и изпълнете командата:
user@hostname:~$ md2pdf some_file.md
В резултат на това в папката ще се появи файл някакъв_файл.md.pdf.
Заключение
Въз основа на описания метод можете да създавате всеки стил на PDF файлове, можете също така да конвертирате други формати вместо md, всеки поддържан от Pandoc. Смея да се надявам, че един ден тази инструкция ще бъде полезна на 3 човека и половина.
Източник: www.habr.com