предговор
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. Засега все още е наличен в това , ако в момента на четене на статията не е наличен по някаква причина, не се отчайвайте, лесно е да го намерите заедно с инструкциите за инсталиране, като напишете нещо като „Инсталиране на PsCyr texlive“ в Google. Ако е наличен, тогава е по-лесно за вас, изтеглете и ние ще приемем, че сте разопаковали архива във вашата домашна папка и по този начин пътят до папката, съдържаща се в архива, изглежда така ~/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 mktexlsrLaTeX шаблон за преобразуване в 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
