Solusi markdown2pdf siap pakai dengan kode sumber untuk Linux

kata pengantar

Penurunan harga adalah cara yang bagus untuk menulis artikel pendek, dan terkadang teks yang cukup banyak, dengan format miring dan tebal sederhana. Penurunan harga juga bagus untuk menulis artikel dengan menyertakan kode sumber. Tetapi kadang-kadang Anda ingin kalah, menari dengan rebana untuk mengubahnya menjadi file PDF biasa yang dibentuk dengan baik, dan agar tidak ada masalah selama konversi, yang, misalnya, saya miliki - Anda tidak dapat menulis dalam bahasa Rusia dalam bahasa Rusia. komentar dari kode sumber, baris yang terlalu panjang tidak ditransfer, tetapi terpotong dan masalah kecil lainnya. Instruksi akan memungkinkan Anda mengatur konverter dengan cepat md2pdf tanpa benar-benar memahami cara kerjanya. Skrip untuk penginstalan otomatis yang kurang lebih ada di bawah di bagian yang sesuai.

Templat TeX sampel saya untuk konversi menggunakan paket font PSCyr, yang menyertakan dukungan untuk font Microsoft, yaitu Times New Roman. Ada persyaratan untuk ijazah menurut GOST. Jika Anda tahu caranya, Anda dapat memodifikasi template sesuai dengan kebutuhan Anda. Dalam instruksi saya sendiri, pertama-tama Anda harus bermain-main dengan pengaturan PSCyr di TexLive. Penyiapan dilakukan dalam distribusi Linux Mint Mate, untuk distribusi lain Anda mungkin harus mencari di Google folder paket TexLive standar untuk sistem Anda.

Menginstal TexLive

Tentu saja, Anda hanya dapat menginstal bagian yang diperlukan dari paket ini. Tapi secara pribadi, saya terus terang terlalu malas untuk mencari instalasi kerja minimum yang diperlukan. Untuk memastikan semuanya berfungsi, instal seluruh paket TexLive. Itu disebut textlive-penuh dan beratnya sedikit lebih dari 2 gigabyte, ingatlah fakta ini. Kami menjalankan perintah:

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

Setelah penginstalan yang cukup lama, Anda dapat melanjutkan ke item berikutnya.

Memasang Konverter Pandoc

Pandoc adalah paket Linux yang memungkinkan Anda mengonversi beberapa format teks ke format lainnya. Ini memiliki banyak fitur menarik yang dapat Anda temukan sendiri di Internet. Kami hanya tertarik pada kemungkinan mengonversi file penurunan harga ke PDF. Periksa apakah Pandoc diinstal dan jika tidak, instal. Misalnya seperti ini:

user@hostname:~$ dpkg -s pandoc

Jika output mengatakan tidak diinstal, instal:

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

Menginstal paket PSCyr untuk TexLive

Pertama, Anda perlu mengunduh PSCyr. Untuk saat ini masih tersedia di ini link, jika pada saat membaca artikel itu tidak tersedia karena suatu alasan, jangan putus asa, mudah untuk menemukannya bersama dengan petunjuk penginstalan dengan mengetikkan sesuatu seperti "Installing PsCyr texlive" di Google. Jika tersedia, maka lebih mudah bagi Anda, unduh dan kami akan menganggap bahwa Anda telah membongkar arsip ke folder rumah Anda dan dengan demikian jalur ke folder yang terdapat dalam arsip terlihat seperti ~/PScyr. Lalu pergi ke Terminal dan jalankan perintah berikut secara berurutan:

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

Selanjutnya, cari tahu di mana direktori lokal berada teksmf. Kami menjalankan perintah:

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

Kemungkinan besar Anda memiliki direktori ini - /usr/lokal/bagikan/texmf/, lalu kita lakukan:

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

Nah, atau Anda tidak bisa repot dan menjalankan perintah yang akan disalin ke folder teksmf dimanapun dia berada:

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

Font PSCyr diinstal, sambungkan ke TexLive:

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

Templat LaTeX untuk konversi md2pdf

Saya tidak akan menjelaskan dengan tepat bagaimana template ini dikonfigurasi, dan hanya akan memberikannya di bawah spoiler tanpa banyak penjelasan. Cukuplah untuk mengatakan bahwa itu terkonfigurasi dengan baik, setidaknya dalam hal bagaimana menangani teks dengan banyak kode sumber. Jika Anda tidak puas dengan ukuran indentasi, spasi baris, kurangnya penomoran bagian dan subbagian, maka menurut saya cukup mudah untuk mencari di Google pertanyaan "bagaimana melakukannya di Latex ..." dan maka kebutuhan Anda. Jika sama sekali tidak jelas, tulis di komentar, saya akan mencoba mempelajari pengaturan saya sendiri 4 tahun yang lalu dan menjelaskan baris template mana yang bertanggung jawab untuk apa. Sementara itu, saya akan menuliskan bagaimana saya melakukannya di PC saya, dan Anda bebas untuk mengulang atau memodifikasinya sendiri.

Buat file templat.tex di katalog /usr/bagikan/texlive/:

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

Berikan izin baca:

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

buka di bawah root dan rekatkan konten yang disembunyikan di bawah spoiler di bawah ini ke dalamnya:

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

Konten templat /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}

Menyimpan file /usr/share/texlive/template.tex dan tulis skrip yang akan mengonversi file Makrdown ke PDF, membuat di folder yang sama sebuah file bernama file Markdown dengan awalan .pdf, yaitu setelah konversi nama file.md akan muncul di folder. nama file.md.pdf. Sebut saja skripnya md2pdf dan letakkan di jalan / usr / bin. Mari jalankan perintah secara berurutan:

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 ke-4 sebenarnya berisi perintah konversi. memperhatikan --dari=markdown_github. Markdown versi GitHub kompatibel dengan Markdown asli, jadi jika teks Anda tertulis di dalamnya, Anda tidak perlu khawatir. Jika file MD Anda ditulis dalam dialek Markdown tertentu, baca manual Pandoc (man pandoc), pastikan implementasi Anda didukung olehnya, dan sesuaikan /usr/bin/md2pdf jika diperlukan.

Script untuk lebih atau kurang instalasi otomatis

Jika Anda tidak benar-benar ingin mengonfigurasi apa pun, dan Anda memiliki distribusi seperti Ubuntu, Anda dapat mencoba membuat skrip dengan konten yang disembunyikan di bawah spoiler, dan kemungkinan besar semuanya akan menginstal sendiri, satu-satunya hal adalah, salin template TeX diposting di bawah spoiler di atas ke tempat yang Anda butuhkan sendiri. Buka Terminal dan jalankan:

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

Kemudian isi dengan konten berikut:

Isi skrip $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

Jalankan dengan perintah:

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

Jangan lupakan itu /usr/share/texlive/template.tex harus diisi seperti yang tertera pada bagian "Templat LaTeX untuk konversi md2pdf" isi.

Menggunakan md2pdf

Cukup buka folder dengan file Markdown (beberapa_file.md) di Terminal dan jalankan perintah:

user@hostname:~$ md2pdf some_file.md

Akibatnya, file akan muncul di folder some_file.md.pdf.

Kesimpulan

Berdasarkan metode yang dijelaskan, Anda dapat membuat gaya file PDF apa pun, Anda juga dapat mengonversi format lain selain md, apa pun yang didukung oleh Pandoc. Saya berani berharap suatu saat instruksi ini akan bermanfaat bagi 3 setengah orang.

Sumber: www.habr.com

Tambah komentar