Պատրաստի markdown2pdf լուծում՝ աղբյուրի կոդով Linux-ի համար

Նախաբան

Markdown-ը կարճ հոդված գրելու հիանալի միջոց է, իսկ երբեմն էլ բավականին շատ տեքստ՝ պարզ շեղ և թավ ձևաչափով: Markdown-ը նաև լավ է հոդվածներ գրելու համար՝ ներառված սկզբնական կոդով: Բայց երբեմն ուզում ես անկորուստ պարել դափի հետ, որպեսզի այն շրջանցես սովորական, լավ ձևավորված PDF ֆայլի, և այնպես, որ փոխակերպման ժամանակ խնդիրներ չառաջանան, որոնք, օրինակ, ես ունեի. ռուսերեն գրել չես կարող: սկզբնական կոդի մեկնաբանությունները, չափազանց երկար տողերը չեն փոխանցվում, այլ կտրված են և այլ մանր խնդիրներ: Հրահանգը թույլ կտա արագ կարգավորել փոխարկիչը md2pdf առանց իրականում հասկանալու, թե ինչպես է այն աշխատում: Քիչ թե շատ ավտոմատ տեղադրման սցենարը ներկայացված է ստորև՝ համապատասխան բաժնում:

Իմ նմուշի TeX ձևանմուշը փոխակերպման համար օգտագործում է PSCyr տառատեսակի փաթեթը, որը ներառում է Microsoft-ի տառատեսակների աջակցություն, մասնավորապես. Times նոր հռոմեական. ԳՕՍՏ-ի համաձայն դիպլոմի համար նման պահանջներ կային. Եթե ​​գիտեք, թե ինչպես, կարող եք փոփոխել ձևանմուշը՝ ձեր կարիքներին համապատասխան: Իմ սեփական հրահանգների համաձայն, դուք նախ պետք է հիմարացնեք TexLive-ում PSCyr կարգավորումը: Կարգավորումը կատարվում է Linux Mint Mate բաշխման մեջ, այլ բաշխումների համար գուցե ստիպված լինեք փնտրել ձեր համակարգի ստանդարտ TexLive փաթեթի թղթապանակները:

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

PSCyr փաթեթի տեղադրում TexLive-ի համար

Նախ անհրաժեշտ է ներբեռնել PSCyr-ը: Առայժմ այն ​​դեռ հասանելի է այստեղ ՈՒղեցույց, եթե հոդվածը կարդալու պահին ինչ-ինչ պատճառներով այն հասանելի չէ, մի հուսահատվեք, հեշտ է գտնել այն տեղադրման հրահանգների հետ միասին՝ մուտքագրելով Google-ում «Installing 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

LaTeX ձևանմուշ md2pdf փոխակերպման համար

Ես չեմ նկարագրի, թե ինչպես է այս ձևանմուշը կազմաձևված, և պարզապես այն կներկայացնեմ սփոյլերի տակ՝ առանց մեծ բացատրության։ Բավական է ասել, որ այն լավ կազմաձևված է, գոնե այն առումով, թե ինչպես է այն մշակում տեքստերը շատ կոդով: Եթե ​​ձեզ չի բավարարում նահանջների չափը, տողերի տարածությունը, բաժինների և ենթաբաժինների համարակալման բացակայությունը, ապա, իմ կարծիքով, ինտերնետում բավականին հեշտ է google-ով փնտրել «ինչպես դա անել լատեքսով ...» և. ապա ձեր կարիքը: Եթե ​​ամենևին պարզ չէ, գրեք մեկնաբանություններում, ես կփորձեմ խորանալ 4 տարի առաջվա իմ կարգավորումներում և նկարագրել, թե ինչի համար է պատասխանատու կաղապարի որ տողը։ Միևնույն ժամանակ ես կգրեմ, թե ինչպես եմ դա արել իմ ԱՀ-ում, և դուք ազատ կարող եք կրկնել կամ փոփոխել այն ինքներդ:

Ստեղծեք ֆայլ կաղապար.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 և դրեց ճանապարհին / usr / աղբարկղ. Եկեք կատարենք հրամանները հաջորդականությամբ.

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 պետք է լրացվի, ինչպես նշված է բաժնում «LaTeX ձևանմուշ md2pdf փոխակերպման համար» բովանդակություն:

Օգտագործելով md2pdf

Պարզապես բացեք թղթապանակը Markdown ֆայլով (some_file.md) Տերմինալում և գործարկեք հրամանը.

user@hostname:~$ md2pdf some_file.md

Արդյունքում թղթապանակում կհայտնվի ֆայլ some_file.md.pdf.

Ամփոփում

Նկարագրված մեթոդի հիման վրա դուք կարող եք ստեղծել ցանկացած ոճի PDF ֆայլեր, կարող եք նաև փոխարկել այլ ձևաչափեր md-ի փոխարեն, որոնք աջակցվում են Pandoc-ի կողմից: Համարձակվում եմ հուսալ, որ մի օր այս հրահանգը օգտակար կլինի 3 ու կես հոգու։

Source: www.habr.com

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