Linux üçün mənbə kodu ilə hazır markdown2pdf həlli

Müqəddimə

Markdown sadə kursiv və qalın formatlaşdırma ilə qısa məqalə, bəzən isə kifayət qədər çox mətn yazmaq üçün əla üsuldur. Markdown mənbə kodu daxil olmaqla məqalələr yazmaq üçün də yaxşıdır. Ancaq bəzən itirmədən, adi, yaxşı formalaşmış bir PDF faylına keçmək üçün qafla rəqs etmək istəyirsən ki, çevirmə zamanı heç bir problem olmasın, məsələn, məndə olan - rus dilində yaza bilməzsən. mənbə kodunun şərhləri, çox uzun sətirlər köçürülmür, ancaq kəsilir və digər kiçik problemlər. Təlimat çeviricini tez bir zamanda qurmağa imkan verəcəkdir md2pdf necə işlədiyini həqiqətən başa düşmədən. Az və ya çox avtomatik quraşdırma üçün skript aşağıda müvafiq bölmədə verilmişdir.

Konversiya üçün nümunə TeX şablonum Microsoft şriftləri üçün dəstəyi ehtiva edən PSCyr şrift paketindən istifadə edir. Times New Roman. GOST-a görə diplom üçün belə tələblər var idi. Necə edəcəyinizi bilirsinizsə, şablonu ehtiyaclarınıza uyğun dəyişə bilərsiniz. Öz göstərişlərimə görə, əvvəlcə TexLive-də PSCyr parametri ilə aldatmalı olacaqsınız. Quraşdırma Linux Mint Mate paylanmasında aparılır, digər paylamalar üçün sisteminiz üçün standart TexLive paket qovluqlarını google-da axtarmalı ola bilərsiniz.

TexLive quraşdırılması

Əlbəttə ki, bu paketin yalnız lazımi hissələrini quraşdıra bilərsiniz. Ancaq şəxsən mən minimum lazımi iş qurğusunu axtarmaq üçün çox tənbəl idim. Hər şeyin işlədiyinə əmin olmaq üçün bütün TexLive paketini quraşdırın. Bu adlanır texlive dolu və çəkisi 2 giqabaytdan bir az artıqdır, bu faktı yadda saxlayın. Biz əmri yerinə yetiririk:

user@hostname:~$ sudo apt install texlive-full -y

Kifayət qədər uzun bir quraşdırmadan sonra növbəti elementə keçə bilərsiniz.

Pandoc çeviricisinin quraşdırılması

Pandoc bəzi mətn formatlarını digərlərinə çevirməyə imkan verən Linux paketidir. İnternetdə özünüzü tapa biləcəyiniz bir çox maraqlı xüsusiyyətlərə malikdir. Bizi yalnız markdown faylını PDF-ə çevirmək imkanları maraqlandırır. Pandoc-un quraşdırılıb-qurulmadığını yoxlayın və əgər quraşdırılmayıbsa, quraşdırın. Məsələn, bu kimi:

user@hostname:~$ dpkg -s pandoc

Çıxış quraşdırılmadığını söyləyirsə, quraşdırın:

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

TexLive üçün PSCyr paketinin quraşdırılması

Əvvəlcə PSCyr proqramını yükləməlisiniz. Hələlik bu yerdə mövcuddur əlaqə, məqaləni oxuyarkən nədənsə mövcud deyilsə, ümidsiz olmayın, Google-da “PsCyr texlive quraşdırılması” kimi bir şey yazaraq quraşdırma təlimatları ilə birlikdə tapmaq asandır. Əgər mövcuddursa, sizin üçün daha asandır, yükləyin və biz güman edəcəyik ki, siz arxivi ev qovluğunuza açmısınız və beləliklə, arxivdə olan qovluğa gedən yol belə görünür. ~/PSCyr. Sonra Terminala gedin və aşağıdakı əmrləri ardıcıllıqla yerinə yetirin:

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

Sonra, yerli kataloqun harada yerləşdiyini öyrənin texmf. Biz əmri yerinə yetiririk:

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

Çox güman ki, bu kataloq sizdə var - /usr/local/share/texmf/, və sonra edirik:

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

Yaxşı, ya da bir qovluğa kopyalayacaq bir əmri narahat edib işlədə bilməzsiniz texmf harada olsa da:

user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')

PSCyr şriftləri quraşdırılıb, TexLive-ə qoşulun:

user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsr

Md2pdf çevrilməsi üçün LaTeX şablonu

Mən bu şablonun necə konfiqurasiya edildiyini dəqiq təsvir etməyəcəyəm və çox izahat vermədən onu sadəcə olaraq spoyler altında verəcəyəm. Ən azından çoxlu mənbə kodu olan mətnləri necə idarə etməsi baxımından yaxşı konfiqurasiya edildiyini söyləmək kifayətdir. Əgər abzasların ölçüsü, sətir aralığı, bölmələrin və yarımbölmələrin nömrələnməməsi sizi qane etmirsə, mənim fikrimcə İnternetdə "bunu Lateksdə necə etmək olar ..." sualını google-da tapmaq olduqca asandır. sonra ehtiyacınız. Heç aydın deyilsə, şərhlərdə yazın, mən 4 il əvvəl öz parametrlərimi araşdırmağa və şablonun hansı sətirinin nəyə cavabdeh olduğunu təsvir etməyə çalışacağam. Bu arada bunu öz kompüterimdə necə etdiyimi yazacam və siz bunu özünüz üçün təkrarlamaq və ya dəyişdirməkdə sərbəstsiniz.

Fayl yaradın template.tex kataloqda /usr/share/texlive/:

user@hostname:~$ sudo touch /usr/share/texlive/template.tex

Ona oxumaq icazələri verin:

user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.tex

onu kökün altında açın və aşağıdakı spoylerin altında gizlənmiş məzmunu ona yapışdırın:

user@hostname:~$ sudo nano /usr/share/texlive/template.tex

Şablon məzmunu /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}

Faylın saxlanması /usr/share/texlive/template.tex və Makrdown faylını PDF-ə çevirəcək skript yazın, eyni qovluqda .pdf prefiksi ilə Markdown faylı adlı fayl yaradın, yəni konvertasiyadan sonra fayl adı.md qovluğunda görünəcək. fayl adı.md.pdf. Ssenariyə zəng edək md2pdf və yola salın / usr / bin. Əmrləri ardıcıllıqla yerinə yetirək:

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-cü sətir əslində çevrilmə əmrini ehtiva edir. diqqət yetirin --from=markdown_github. Markdown-un GitHub versiyası orijinal Markdown ilə geriyə uyğundur, ona görə də mətniniz orada yazılıbsa, narahat olmaq lazım deyil. Əgər MD faylınız xüsusi Markdown ləhcəsində yazılıbsa, Pandoc təlimatını oxuyun (man pandoc), tətbiqinizin dəstəklədiyinə əmin olun və düzəldin /usr/bin/md2pdf zəruridirsə.

Az və ya çox avtomatik quraşdırma üçün skript

Əgər həqiqətən heç nəyi konfiqurasiya etmək istəmirsinizsə və Ubuntuya bənzər paylamaya sahibsinizsə, məzmunu spoylerin altında gizlədilmiş skript yaratmağa cəhd edə bilərsiniz və çox güman ki, hər şey özü quraşdırılacaq, yeganə şey kopyalamaqdır. yuxarıda spoyler altında yerləşdirilən TeX şablonu sizə lazım olan yerə. Terminalı açın və işə salın:

user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.sh

Sonra onu aşağıdakı məzmunla doldurun:

$HOME/installmd2pdf.sh skriptinin məzmunu

#!/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

Bunu əmrlə işə salın:

user@hostname:~$ sudo bash $HOME/installmd2pdf.sh

Bunu unutma /usr/share/texlive/template.tex bölməsində göstərildiyi kimi doldurulmalıdır.Md2pdf çevrilməsi üçün LaTeX şablonu» məzmun.

Md2pdf istifadə

Sadəcə Markdown faylı olan qovluğu açın (some_file.md) Terminalda və əmri işlədin:

user@hostname:~$ md2pdf some_file.md

Nəticədə qovluqda bir fayl görünəcək some_file.md.pdf.

Nəticə

Təsvir edilən metoda əsaslanaraq, istənilən üslubda PDF faylları qura bilərsiniz, həmçinin Pandoc tərəfindən dəstəklənən md əvəzinə digər formatları da çevirə bilərsiniz. Ümid etməyə cəsarət edirəm ki, bir gün bu təlimat 3 yarım nəfər üçün faydalı olacaq.

Mənbə: www.habr.com

Добавить комментарий