Linux үшін бастапқы коды бар дайын markdown2pdf шешімі

Алғы сөз

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 бумасы. Оның көптеген қызықты мүмкіндіктері бар, оларды сіз Интернетте таба аласыз. Бізді тек таңбалау файлын PDF форматына түрлендіру мүмкіндігі қызықтырады. Pandoc орнатылғанын тексеріңіз, ал егер орнатылмаған болса, оны орнатыңыз. Мысалы, келесідей:

user@hostname:~$ dpkg -s pandoc

Егер шығыс оның орнатылмағанын айтса, орнатыңыз:

user@hostname:~$ sudo apt install pandoc -y

TexLive үшін PSCyr бумасын орнату

Алдымен PSCyr жүктеп алу керек. Әзірге ол осы жерде қол жетімді байланыс, егер мақаланы оқып жатқан кезде ол қандай да бір себептермен қол жетімді болмаса, үмітіңізді үзбеңіз, оны орнату нұсқауларымен бірге Google-да «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

Әрі қарай, жергілікті каталог қай жерде орналасқанын біліңіз textmf. Біз пәрменді орындаймыз:

user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'

Сізде бұл каталог бар болуы мүмкін - /usr/local/share/texmf/, содан кейін біз:

user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/

Немесе сіз қалтаға көшіретін пәрменді орындай алмайсыз textmf ол қайда болса да:

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-да «оны латексте қалай жасауға болады ...» деген сұрақты қою өте оңай және содан кейін сіздің қажеттілігіңіз. Егер бұл мүлдем түсініксіз болса, түсініктемелерде жазыңыз, мен 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 форматына түрлендіретін сценарий жазыңыз, сол қалтада .pdf префиксі бар Markdown файлы деп аталатын файлды жасаңыз, яғни түрлендіруден кейін. 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 файлдарының кез келген стилін құра аласыз, сонымен қатар Pandoc қолдайтын кез келген md пішімінің орнына басқа пішімдерді түрлендіруге болады. Бір күні бұл нұсқаулық 3 жарым адамға пайдалы болады деп үміттенемін.

Ақпарат көзі: www.habr.com

пікір қалдыру