сөздөр
Markdown - курсив жана жоон шрифт түрүндөгү жөнөкөй форматтоо менен кыска макаланы, кээде өтө узун текстти жазуунун эң сонун жолу. Markdown булак кодун камтыган макалаларды жазуу үчүн да жакшы. Бирок кээде сиз аны кадимки, жакшы форматталган PDF файлына жоготуусуз, дап менен бийлеп, конвертациялоодо эч кандай көйгөйлөр болбошу үчүн өткөргүңүз келет, мисалы, менде болгон - комментарийлерде орусча жаза албайсыз. баштапкы коддон өтө узун саптар өткөрүлбөйт жана башка майда көйгөйлөр өчүрүлөт. Көрсөтмөлөр конверторду тез орнотууга мүмкүндүк берет md2pdf анын кантип иштээрин такыр изилдебестен. Аздыр-көптүр автоматтык орнотуу үчүн скрипт төмөндө тиешелүү бөлүмдө.
Конвертациялоо үчүн менин мисалдагы TeX шаблонум Microsoft шрифттерин колдоону камтыган PSCyr шрифт пакетин колдонот, атап айтканда Times New Roman. Бул ГОСТ боюнча дипломго коюлган талаптар эле. Кантип экенин билсеңиз, шаблонду муктаждыктарыңызга ылайыкташтыра аласыз. Менин көрсөтмөмдө, сиз алгач TexLive ичинде PSCyr орнотуу менен алектенишиңиз керек. Орнотуу Linux Mint Mate дистрибьюторунда жасалат; башка бөлүштүрүүлөр үчүн сиз системаңыз үчүн стандарттуу TexLive пакет папкаларын Google'дан издешиңиз керек болушу мүмкүн.
TexLive орнотулууда
Албетте, сиз берилген пакеттин сизге керектүү бөлүктөрүн гана орното аласыз. Бирок жекече, мен минималдуу талап кылынган жумушчу орнотууну издөөгө жалкоо болдум. Баары туура иштеши үчүн, биз TexLive пакетин толугу менен орнотобуз. деп аталат texlive-толук жана салмагы 2 гигабайттан бир аз көбүрөөк, бул чындыкты эстен чыгарбаңыз. Биз буйрукту аткарабыз:
user@hostname:~$ sudo apt install texlive-full -y
Жетиштүү узак орнотуудан кийин, кийинки кадамга өтсөңүз болот.
Pandoc конвертер орнотуу
Pandoc - бул кээ бир текст форматтарын башкаларга которууга мүмкүндүк берген Linux пакети. Анын көптөгөн кызыктуу өзгөчөлүктөрү бар, алар менен Интернеттен тааныша аласыз. Бизди Markdown файлын PDFке айландыруу мүмкүнчүлүгү гана кызыкдар. Келгиле, Pandoc орнотулганын текшерип көрөлү, эгерде орнотулбаса, аны орнотуңуз. Мисалы, бул сыяктуу:
user@hostname:~$ dpkg -s pandoc
Чыгуу ал орнотулган эмес деп айтса, аны орнотуңуз:
user@hostname:~$ sudo apt install pandoc -y
TexLive үчүн PSCyr пакетин орнотуу
Алгач сиз 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
md2pdf конверсиясы үчүн LaTeX үлгүсү
Мен бул шаблондун кантип конфигурацияланганын сүрөттөп бербейм жана аны көп түшүндүрбөстөн спойлердин астында сунуштайм. Анын жакшы конфигурацияланганын, жок эле дегенде, көптөгөн баштапкы коддору бар тексттерди иштетүүдө деп айтуу жетиштүү. Эгерде сизди чегинүүлөрдүн өлчөмү, сап аралыктары, бөлүмдөрдүн жана бөлүмдөрдүн номерлеринин жоктугу канааттандырбаса, анда менин оюмча, Google'га "Latexте кантип жасоо керек ..." деген суроону жана андан кийин сиздин керектөөңүздү коюу оңой. Эгер бул такыр түшүнүксүз болсо, комментарийге жазыңыз, мен 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
root катары ачып, ага төмөндөгү спойлердин астында катылган мазмунду чаптаңыз:
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 жана Макрdown файлын PDFке айландыра турган скрипт жазыңыз, ошол эле папкада Markdown файлы деп аталган .pdf префикси бар файлды түзүңүз, башкача айтканда конвертациядан кийин filename.md папкада пайда болот filename.md.pdf. Келгиле, сценарийди чакыралы md2pdf жана аны жолго сал / usr / bin. Келгиле, буйруктарды ырааттуулук менен аткаралы:
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-сап чындыгында конверсия буйругун камтыйт. көңүл буруңуз --from=markdown_github. Markdown'дун GitHub версиясы түпнуска 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 бөлүмүндө көрсөтүлгөндөй толтурулушу керек.md2pdf конверсиясы үчүн LaTeX үлгүсү» мазмуну.
md2pdf колдонуу
Жөн гана Markdown файлы бар папканы ачыңыз (some_file.md) Терминалда жана буйрукту иштетиңиз:
user@hostname:~$ md2pdf some_file.md
Натыйжада, папкада файл пайда болот some_file.md.pdf.
жыйынтыктоо
Сүрөттөлгөн ыкманын негизинде сиз PDF файлдарынын каалаган стилин кура аласыз; md ордуна Pandoc тарабынан колдоого алынган башка форматтарды да которсоңуз болот. Бир күнү бул нускама 3 жарым адамга пайдалуу болот деп үмүттөнөм.
Source: www.habr.com