คำปรารภ
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 สำหรับตอนนี้มันยังคงมีอยู่ในนี้
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