โซลูชัน markdown2pdf สำเร็จรูปพร้อมซอร์สโค้ดสำหรับ Linux

คำปรารภ

Markdown เป็นวิธีที่ยอดเยี่ยมในการเขียนบทความสั้นๆ และบางครั้งก็มีข้อความค่อนข้างมาก ด้วยการจัดรูปแบบตัวเอียงและตัวหนาที่เรียบง่าย Markdown ยังดีสำหรับการเขียนบทความที่มีซอร์สโค้ดรวมอยู่ด้วย แต่บางครั้งคุณต้องการเต้นรำกับแทมบูรีนอย่างไม่ลดละเพื่อแปลงเป็นไฟล์ PDF ที่มีรูปแบบปกติและเพื่อให้ไม่มีปัญหาระหว่างการแปลงซึ่งตัวอย่างเช่นฉันมี - คุณไม่สามารถเขียนเป็นภาษารัสเซียได้ ความคิดเห็นของซอร์สโค้ดจะไม่ถ่ายโอนบรรทัดที่ยาวเกินไป แต่ถูกตัดและปัญหาเล็กน้อยอื่น ๆ คำแนะนำจะช่วยให้คุณสามารถตั้งค่าตัวแปลงได้อย่างรวดเร็ว md2pdf โดยไม่เข้าใจวิธีการทำงานอย่างแท้จริง สคริปต์สำหรับการติดตั้งอัตโนมัติมากหรือน้อยอยู่ด้านล่างในส่วนที่เหมาะสม

เทมเพลต TeX ตัวอย่างของฉันสำหรับการแปลงใช้แพ็คเกจฟอนต์ PSCyr ซึ่งรวมถึงการสนับสนุนฟอนต์ Microsoft ได้แก่ Times New Roman. มีข้อกำหนดดังกล่าวสำหรับประกาศนียบัตรตาม GOST หากคุณทราบวิธีการ คุณสามารถปรับเปลี่ยนเทมเพลตให้เหมาะกับความต้องการของคุณได้ ในคำแนะนำของฉันเอง ขั้นแรกคุณจะต้องเล่นๆ กับการตั้งค่า PSCyr ใน TexLive การตั้งค่าเสร็จสิ้นในการแจกจ่าย Linux Mint Mate สำหรับการแจกจ่ายอื่น ๆ คุณอาจต้อง google โฟลเดอร์แพ็คเกจ 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 สำหรับตอนนี้มันยังคงมีอยู่ในนี้ ลิงค์หากในขณะที่อ่านบทความไม่สามารถใช้งานได้ด้วยเหตุผลบางประการ อย่าเพิ่งหมดหวัง คุณสามารถค้นหาพร้อมกับคำแนะนำในการติดตั้งได้โดยพิมพ์คำว่า “Installing PsCyr texlive” ใน Google หากมีให้ดาวน์โหลด จะง่ายกว่าสำหรับคุณ ดาวน์โหลดและเราจะถือว่าคุณได้แตกไฟล์เก็บถาวรลงในโฟลเดอร์เริ่มต้นของคุณแล้ว ดังนั้นเส้นทางไปยังโฟลเดอร์ที่อยู่ในไฟล์เก็บถาวรจะมีลักษณะดังนี้ ~/ปส. จากนั้นไปที่ Terminal และดำเนินการคำสั่งต่อไปนี้ตามลำดับ:

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

จากนั้นค้นหาว่าไดเรกทอรีในเครื่องอยู่ที่ใด ข้อความ. เราดำเนินการคำสั่ง:

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

เป็นไปได้มากว่าคุณมีไดเร็กทอรีนี้ - /usr/local/share/texmf/แล้วเราทำ:

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

หรือคุณไม่สามารถรบกวนและเรียกใช้คำสั่งที่จะคัดลอกไปยังโฟลเดอร์ ข้อความ ไม่ว่าเธอจะอยู่ที่ไหน:

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 ปีที่แล้วและอธิบายว่าเทมเพลตบรรทัดใดรับผิดชอบ ในระหว่างนี้ ฉันจะจดบันทึกวิธีการทำบนพีซีของฉัน และคุณมีอิสระที่จะทำซ้ำหรือแก้ไขด้วยตัวคุณเอง

สร้างไฟล์ template.tex ในแคตตาล็อก /usr/share/เท็กซ์ไลฟ์/:

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 / bin. มาดำเนินการคำสั่งตามลำดับ:

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 มีคำสั่งการแปลง ให้ความสนใจกับ --จาก=markdown_github. Markdown เวอร์ชัน GitHub เข้ากันได้กับ Markdown ดั้งเดิม ดังนั้นหากข้อความของคุณถูกเขียนลงไป คุณก็ไม่ต้องกังวล หากไฟล์ MD ของคุณเขียนด้วยภาษาเฉพาะของ Markdown ให้อ่านคู่มือ Pandoc (man pandoc) ตรวจสอบให้แน่ใจว่าการใช้งานของคุณรองรับและปรับแต่ง /usr/bin/md2pdf ในกรณีที่จำเป็น.

สคริปต์สำหรับการติดตั้งอัตโนมัติมากหรือน้อย

หากคุณไม่ต้องการกำหนดค่าอะไรเลยจริง ๆ และคุณมีการกระจายแบบ Ubuntu คุณสามารถลองสร้างสคริปต์ที่มีเนื้อหาซ่อนอยู่ใต้สปอยเลอร์ และเป็นไปได้มากว่าทุกอย่างจะติดตั้งเอง สิ่งเดียวคือคัดลอก เทมเพลต TeX ที่โพสต์ใต้สปอยเลอร์ด้านบนไปยังตำแหน่งที่คุณต้องการ เปิด Terminal แล้วรัน:

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) ใน Terminal แล้วรันคำสั่ง:

user@hostname:~$ md2pdf some_file.md

ดังนั้นไฟล์จะปรากฏในโฟลเดอร์ some_file.md.pdf.

ข้อสรุป

ตามวิธีที่อธิบายไว้ คุณสามารถสร้างไฟล์ PDF สไตล์ใดก็ได้ คุณยังสามารถแปลงรูปแบบอื่นแทน md ซึ่งรองรับโดย Pandoc ฉันกล้าที่จะหวังว่าวันหนึ่งคำแนะนำนี้จะเป็นประโยชน์กับคน 3 คนครึ่ง

ที่มา: will.com

เพิ่มความคิดเห็น