Solusi markdown2pdf anu siap sareng kode sumber pikeun Linux

foreword

Markdown mangrupikeun cara anu saé pikeun nyerat tulisan anu pondok, sareng sakapeung seueur téks, kalayan pormat miring anu sederhana sareng wani. Markdown ogé alus pikeun nulis artikel kalawan kode sumber kaasup. Tapi sakapeung rék loselessly, tari jeung rebana pikeun nyusul kana biasa, well-kabentuk file PDF, sarta ku kituna teu aya masalah salila konversi, nu, contona, kuring kungsi - anjeun teu bisa nulis dina basa Rusia dina. komentar ngeunaan kodeu sumber, garis panjang teuing teu ditransfer, tapi motong sarta masalah minor séjén. Parentah bakal ngidinan Anjeun pikeun gancang nyetél konverter md2pdf tanpa bener ngarti kumaha gawéna. Skrip pikeun instalasi otomatis leuwih atawa kirang aya di handap dina bagian luyu.

Sampel template TeX kuring pikeun konversi nganggo pakét font PSCyr, anu kalebet dukungan pikeun fon Microsoft, nyaéta Times New Roman. Aya syarat sapertos pikeun diploma nurutkeun GOST. Upami anjeun terang kumaha, anjeun tiasa ngarobih template pikeun nyocogkeun ka kabutuhan anjeun. Dina parentah kuring sorangan, Anjeun mimitina kudu fool sabudeureun kalawan setelan PSCyr di TexLive. Setélan dilakukeun dina distribusi Linux Mint Mate, pikeun distribusi anu sanés anjeun kedah google polder pakét TexLive standar pikeun sistem anjeun.

Masang TexLive

Tangtosna, anjeun ngan ukur tiasa masang bagian anu diperyogikeun tina pakét ieu. Tapi sacara pribadi, kuring terus terang teuing puguh milarian instalasi kerja anu diperyogikeun minimum. Pikeun mastikeun sagalana jalan, install sakabéh pakét TexLive. Disebutna texlive-pinuh sarta weighs saeutik leuwih ti 2 gigabyte, tetep kanyataan ieu dina pikiran. Urang ngajalankeun paréntah:

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

Saatos instalasi cukup lila, Anjeun bisa neruskeun ka item salajengna.

Pasang Pandoc Converter

Pandoc mangrupikeun pakét Linux anu ngamungkinkeun anjeun ngarobih sababaraha format téks ka anu sanés. Éta ngagaduhan seueur fitur anu pikaresepeun anu anjeun tiasa mendakan diri dina Internét. Kami ngan ukur resep kana kamungkinan ngarobih file markdown kana PDF. Pariksa naha Pandoc dipasang sareng upami henteu, pasang. Contona saperti kieu:

user@hostname:~$ dpkg -s pandoc

Upami kaluaran nyarios yén éta henteu dipasang, pasang:

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

Masang pakét PSCyr pikeun TexLive

Mimiti anjeun kedah ngaunduh PSCyr. Pikeun ayeuna éta masih sadia di ieu link, upami dina waktos maca tulisan éta henteu sayogi pikeun sababaraha alesan, ulah asa-asa, gampang mendakanana sareng petunjuk pamasangan ku ngetikkeun sapertos "Masang PsCyr texlive" dina Google. Upami éta sayogi, maka éta langkung gampang pikeun anjeun, unduh sareng kami bakal nganggap yén anjeun parantos ngabongkar arsip kana folder bumi anjeun sahingga jalan kana folder anu aya dina arsip sapertos kieu. ~/PSCyr. Teras angkat ka Terminal sareng laksanakeun paréntah di handap ieu dina urutan:

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

Salajengna, panggihan dimana lokasina diréktori lokal texmf. Urang ngajalankeun paréntah:

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

Paling dipikaresep anjeun gaduh diréktori ieu - /usr/local/share/texmf/, lajeng urang ngalakukeun:

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

Nya, atanapi anjeun henteu tiasa ngaganggu sareng ngajalankeun paréntah anu bakal nyalin kana polder texmf dimana wae manehna:

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

Font PSCyr dipasang, sambungkeun ka TexLive:

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

template LaTeX pikeun konversi md2pdf

Kuring moal ngajelaskeun persis kumaha template ieu ngonpigurasi, sarta ngan bakal masihan eta handapeun spoiler tanpa loba katerangan. Cukup disebutkeun yen eta geus ngonpigurasi ogé, sahenteuna dina cara handles téks kalawan loba kode sumber. Upami anjeun henteu sugema ku ukuran indents, jarak garis, kurangna panomeran bagian sareng subsections, maka dina pamanggih kuring cukup gampang pikeun google patarosan dina Internét "kumaha carana ngalakukeunana dina Latex ..." sareng lajeng kabutuhan Anjeun. Upami éta henteu jelas pisan, nyerat dina koméntar, kuring bakal nyobian ngagali kana setélan kuring sorangan 4 sababaraha taun ka pengker sareng nerangkeun anu mana garis témplat tanggung jawab naon. Samentawis waktos, kuring bakal nyerat kumaha kuring ngalakukeun éta dina PC kuring, sareng anjeun bébas ngulang atanapi ngarobih pikeun diri anjeun.

Jieun file template.tex dina katalog /usr/share/texlive/:

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

Masihan idin maca:

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

buka di handapeun akar sareng témpél eusi anu disumputkeun handapeun spoiler di handap ieu:

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

Eusi citakan /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}

Nyimpen file /usr/share/texlive/template.tex sareng nyerat skrip anu bakal ngarobih file Makrdown kana PDF, nyiptakeun dina folder anu sami file anu disebut file Markdown kalayan awalan .pdf, nyaéta saatos konversi. Ngaran koropak.md bakal muncul dina polder. filename.md.pdf. Hayu urang nelepon naskah md2pdf sarta nempatkeun dina jalan / usr / bin. Hayu urang ngajalankeun paréntah dina urutan:

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

Baris ka-4 sabenerna ngandung paréntah konvérsi. nengetan --from = markdown_github. Versi GitHub tina Markdown cocog sareng Markdown asli, janten upami téks anjeun ditulis di jerona, anjeun henteu kedah hariwang. Upami file MD anjeun ditulis dina dialek Markdown khusus, teras baca manual Pandoc (man pandoc), pastikeun palaksanaan anjeun dirojong ku éta, sareng tweak /usr/bin/md2pdf lamun perlu.

Script pikeun leuwih atawa kirang instalasi otomatis

Mun anjeun teu bener hayang ngonpigurasikeun nanaon pisan, jeung anjeun boga distribusi Ubuntu-kawas, anjeun tiasa nyobian nyieun hiji naskah kalawan eusi disumputkeun handapeun spoiler, sarta paling dipikaresep sagalana bakal install sorangan, hijina hal anu, nyalin. template TeX dipasang dina spoiler luhur ka tempat nu peryogi sorangan. Buka Terminal sareng jalankeun:

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

Teras eusian ku eusi ieu:

Eusi naskah $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

Jalankeun éta kalayan paréntah:

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

Tong hilap éta /usr/share/texlive/template.tex kudu dieusian sakumaha dituduhkeun dina bagian "template LaTeX pikeun konversi md2pdf» eusi.

Ngagunakeun md2pdf

Ngan buka folder kalayan file Markdown (some_file.md) dina Terminal sareng ngajalankeun paréntah:

user@hostname:~$ md2pdf some_file.md

Hasilna, file bakal muncul dina polder some_file.md.pdf.

kacindekan

Dumasar kana metode anu dijelaskeun, anjeun tiasa ngawangun gaya naon waé file PDF, anjeun ogé tiasa ngarobih format sanés tibatan md, anu dirojong ku Pandoc. Kuring wani miharep yén hiji poé instruksi ieu bakal mangpaat pikeun 3 satengah jalma.

sumber: www.habr.com

Tambahkeun komentar