Linux için kaynak kodlu hazır markdown2pdf çözümü

Önsöz

Markdown, basit italik ve kalın biçimlendirme ile kısa bir makale ve bazen oldukça fazla metin yazmanın harika bir yoludur. Markdown, kaynak kodu dahil makaleler yazmak için de iyidir. Ancak bazen kayıpsız bir şekilde, bir tefle dans ederek onu normal, iyi biçimlendirilmiş bir PDF dosyasına dönüştürmek istersiniz ve böylece dönüştürme sırasında herhangi bir sorun olmasın, örneğin benim sahip olduğum - Rusça yazamazsınız. kaynak kodundaki yorumlar, çok uzun satırlar aktarılmıyor, kesiklik ve diğer ufak tefek problemler. Talimat, dönüştürücüyü hızlı bir şekilde kurmanıza izin verecektir. md2pdf nasıl çalıştığını gerçekten anlamadan. Aşağı yukarı otomatik kurulum için komut dosyası aşağıda uygun bölümdedir.

Örnek TeX dönüştürme şablonum, Microsoft yazı tipleri için destek içeren PSCyr yazı tipi paketini kullanır; Times New Roman. GOST'a göre bir diploma için bu tür gereksinimler vardı. Nasıl yapılacağını biliyorsanız, şablonu ihtiyaçlarınıza göre değiştirebilirsiniz. Kendi talimatlarıma göre, önce TexLive'deki PSCyr ayarıyla dalga geçmeniz gerekecek. Kurulum, Linux Mint Mate dağıtımında yapılır, diğer dağıtımlar için, sisteminiz için standart TexLive paket klasörlerini google'da aramanız gerekebilir.

TexLive'ı Yükleme

Elbette bu paketin sadece gerekli kısımlarını kurabilirsiniz. Ama şahsen, açıkçası gerekli minimum çalışma kurulumunu aramak için çok tembeldim. Her şeyin çalıştığından emin olmak için tüm TexLive paketini kurun. denir texlive-dolu ve 2 gigabayttan biraz daha ağır, bu gerçeği aklınızda bulundurun. Komutu yürütürüz:

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

Yeterince uzun bir kurulumdan sonra bir sonraki öğeye geçebilirsiniz.

Pandoc Dönüştürücüyü Yükleme

Pandoc, bazı metin biçimlerini diğerlerine dönüştürmenize izin veren bir Linux paketidir. Kendinizi internette bulabileceğiniz birçok ilginç özelliğe sahiptir. Yalnızca bir işaretleme dosyasını PDF'ye dönüştürme olasılığıyla ilgileniyoruz. Pandoc'un kurulu olup olmadığını kontrol edin ve kurulu değilse kurun. Örneğin bunun gibi:

user@hostname:~$ dpkg -s pandoc

Çıktı kurulu olmadığını söylüyorsa, kurun:

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

TexLive için PSCyr paketini yükleme

Öncelikle PSCyr'ı indirmeniz gerekiyor. Şimdilik bu adreste hala mevcut bağlantı, makaleyi okurken herhangi bir nedenle mevcut değilse, umutsuzluğa kapılmayın, Google'da "PsCyr texlive Kurulumu" gibi bir şey yazarak kurulum talimatlarıyla birlikte bulmak kolaydır. Varsa, o zaman sizin için daha kolay, indirin ve arşivi ana klasörünüze açtığınızı varsayacağız ve böylece arşivde bulunan klasörün yolu şuna benzer: ~/PSCyr. Ardından Terminal'e gidin ve aşağıdaki komutları sırayla yürütün:

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

Ardından, yerel dizinin nerede olduğunu bulun metin. Komutu uyguluyoruz:

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

Büyük olasılıkla bu dizine sahipsiniz - /usr/yerel/paylaş/texmf/ve sonra şunu yaparız:

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

Ya da bir klasöre kopyalayacak bir komutu rahatsız edemez ve çalıştıramazsınız. metin nerede olursa olsun:

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

PSCyr yazı tipleri yüklü, TexLive'a bağlanın:

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

md2pdf dönüştürme için LaTeX şablonu

Bu şablonun nasıl yapılandırıldığını tam olarak açıklamayacağım ve fazla açıklama yapmadan spoiler altında vereceğim. En azından çok fazla kaynak kodu içeren metinleri nasıl işlediği açısından iyi yapılandırılmış olduğunu söylemek yeterli. Girintilerin boyutundan, satır aralığından, bölümlerin ve alt bölümlerin numaralandırılmamasından memnun değilseniz, bence internette "Lateks'te nasıl yapılır ..." sorusunu google'da aramak oldukça kolaydır ve sonra senin ihtiyacın Hiç net değilse yorumları yazın, 4 yıl önceki kendi ayarlarımı araştırmaya çalışacağım ve şablonun hangi satırının neden sorumlu olduğunu açıklamaya çalışacağım. Bu arada, PC'mde nasıl yaptığımı yazacağım ve siz tekrarlamakta veya kendiniz değiştirmekte özgürsünüz.

dosya oluştur şablon.tex katalogda /usr/paylaş/texlive/:

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

Okuma izinlerini verin:

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

root altında açın ve aşağıdaki spoiler altında gizlenmiş içeriği içine yapıştırın:

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

Şablon içeriği /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}

dosya kaydediliyor /usr/share/texlive/template.tex ve Makrdown dosyasını PDF'ye dönüştürecek bir komut dosyası yazın, aynı klasörde .pdf ön ekiyle, yani dönüştürmeden sonra Markdown dosyası adlı bir dosya oluşturun. dosyaadı.md klasörde görünecektir. dosyaadı.md.pdf. Senaryoyu arayalım md2pdf ve yola koymak / Usr / bin. Komutları sırasıyla uygulayalım:

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. satır aslında dönüştürme komutunu içerir. dikkat et --from=markdown_github. Markdown'ın GitHub sürümü, orijinal Markdown ile geriye dönük olarak uyumludur, bu nedenle metniniz içinde yazılmışsa endişelenmenize gerek yoktur. MD dosyanız belirli bir Markdown lehçesinde yazılmışsa Pandoc kılavuzunu okuyun (man pandoc), uygulamanızın desteklediğinden emin olun ve ince ayar yapın /usr/bin/md2pdf Eğer gerekliyse.

Az ya da çok otomatik kurulum için komut dosyası

Gerçekten hiçbir şey yapılandırmak istemiyorsanız ve Ubuntu benzeri bir dağıtımınız varsa, spoiler altında gizlenmiş içeriklerle bir komut dosyası oluşturmayı deneyebilirsiniz ve büyük olasılıkla her şey kendi kendine kurulacaktır, tek şey kopyala Yukarıdaki spoiler altında yayınlanan TeX şablonu, ihtiyacınız olan yere. Terminali açın ve çalıştırın:

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

Ardından, aşağıdaki içerikle doldurun:

$HOME/installmd2pdf.sh betiğinin içeriği

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

Şu komutla çalıştırın:

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

Bunu unutma /usr/share/texlive/template.tex " bölümünde belirtildiği gibi doldurulmalıdır.md2pdf dönüştürme için LaTeX şablonu" içerik.

md2pdf'yi kullanma

Sadece Markdown dosyasının bulunduğu klasörü açın (bazı_dosya.md) Terminal'de ve komutu çalıştırın:

user@hostname:~$ md2pdf some_file.md

Sonuç olarak, klasörde bir dosya görünecektir. bazı_dosya.md.pdf.

Sonuç

Açıklanan yönteme bağlı olarak, herhangi bir PDF dosyası stili oluşturabilirsiniz, ayrıca md yerine Pandoc tarafından desteklenen diğer biçimleri de dönüştürebilirsiniz. Bir gün bu talimatın 3 buçuk kişiye faydalı olacağını ummaya cesaret ediyorum.

Kaynak: habr.com

Yorum ekle