lời tựa
Markdown là một cách tuyệt vời để viết một bài báo ngắn và đôi khi khá nhiều văn bản, với định dạng in nghiêng và in đậm đơn giản. Markdown cũng tốt cho việc viết bài có mã nguồn đi kèm. Nhưng đôi khi bạn muốn nhảy một cách dễ dàng với một tambourine để biến nó thành một tệp PDF thông thường, được định dạng tốt và để không gặp vấn đề gì trong quá trình chuyển đổi, chẳng hạn như tôi đã có - bạn không thể viết bằng tiếng Nga bằng tiếng Nga các chú thích của mã nguồn, các dòng quá dài không được chuyển, nhưng bị cắt và các vấn đề nhỏ khác. Hướng dẫn sẽ cho phép bạn nhanh chóng thiết lập bộ chuyển đổi md2pdf mà không thực sự hiểu nó hoạt động như thế nào. Kịch bản cài đặt ít nhiều tự động nằm bên dưới trong phần thích hợp.
Mẫu TeX mẫu của tôi để chuyển đổi sử dụng gói phông chữ PSCyr, bao gồm hỗ trợ cho các phông chữ của Microsoft, cụ thể là Times New Roman. Có những yêu cầu như vậy đối với bằng tốt nghiệp theo GOST. Nếu bạn biết cách, bạn có thể sửa đổi mẫu cho phù hợp với nhu cầu của mình. Theo hướng dẫn của riêng tôi, trước tiên bạn sẽ phải loay hoay với cài đặt PSCyr trong TexLive. Việc thiết lập được thực hiện trong bản phân phối Linux Mint Mate, đối với các bản phân phối khác, bạn có thể phải tìm trên google các thư mục gói TexLive tiêu chuẩn cho hệ thống của mình.
Cài đặt TexLive
Tất nhiên, bạn chỉ có thể cài đặt những phần cần thiết của gói này. Nhưng cá nhân tôi, thành thật mà nói, tôi quá lười biếng để tìm kiếm cài đặt hoạt động cần thiết tối thiểu. Để đảm bảo mọi thứ hoạt động, hãy cài đặt toàn bộ gói TexLive. Nó được gọi là texlive-đầy đủ và nặng hơn 2 gigabyte một chút, hãy ghi nhớ điều này. Chúng tôi thực hiện lệnh:
user@hostname:~$ sudo apt install texlive-full -y
Sau khi cài đặt đủ lâu, bạn có thể chuyển sang mục tiếp theo.
Cài đặt Bộ chuyển đổi Pandoc
Pandoc là một gói Linux cho phép bạn chuyển đổi một số định dạng văn bản sang các định dạng khác. Nó có rất nhiều tính năng thú vị mà bạn có thể tự tìm kiếm trên Internet. Chúng tôi chỉ quan tâm đến khả năng chuyển đổi tệp đánh dấu thành PDF. Kiểm tra xem Pandoc đã được cài đặt chưa và nếu chưa, hãy cài đặt nó. Ví dụ như thế này:
user@hostname:~$ dpkg -s pandoc
Nếu đầu ra nói rằng nó chưa được cài đặt, hãy cài đặt:
user@hostname:~$ sudo apt install pandoc -y
Cài đặt gói PSCyr cho TexLive
Trước tiên, bạn cần tải xuống PSCyr. Hiện tại nó vẫn có sẵn tại đây
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
Tiếp theo, tìm xem thư mục cục bộ nằm ở đâu texmf. Chúng tôi thực hiện lệnh:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'
Rất có thể bạn có thư mục này - /usr/local/share/texmf/, và sau đó chúng tôi làm:
user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/
Chà, hoặc bạn không thể bận tâm và chạy một lệnh sẽ sao chép vào một thư mục texmf dù cô ấy ở đâu:
user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')
Đã cài đặt phông chữ PSCyr, kết nối với TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsr
Mẫu LaTeX để chuyển đổi md2pdf
Tôi sẽ không mô tả chính xác cách cấu hình mẫu này và sẽ chỉ đưa nó vào phần giới thiệu mà không cần giải thích nhiều. Chỉ cần nói rằng nó được cấu hình tốt, ít nhất là về cách nó xử lý các văn bản có nhiều mã nguồn. Nếu bạn không hài lòng với kích thước thụt lề, khoảng cách dòng, thiếu đánh số các phần và tiểu mục, thì theo tôi, bạn có thể dễ dàng tra google câu hỏi trên Internet “cách thực hiện trong Latex…” và sau đó nhu cầu của bạn. Nếu nó không rõ ràng, hãy viết bình luận, tôi sẽ cố gắng đi sâu vào cài đặt của chính mình 4 năm trước và mô tả dòng nào của mẫu chịu trách nhiệm cho việc gì. Trong thời gian chờ đợi, tôi sẽ viết ra cách tôi đã làm trên PC của mình và bạn có thể tự mình lặp lại hoặc sửa đổi nó.
Tạo một tập tin mẫu.tex trong danh mục /usr/share/texlive/:
user@hostname:~$ sudo touch /usr/share/texlive/template.tex
Cấp cho nó quyền đọc:
user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.tex
mở nó dưới thư mục gốc và dán nội dung ẩn dưới spoiler bên dưới vào đó:
user@hostname:~$ sudo nano /usr/share/texlive/template.tex
Nội dung mẫu /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}
Lưu tệp /usr/share/texlive/template.tex và viết một tập lệnh sẽ chuyển đổi tệp Makrdown thành PDF, tạo trong cùng một thư mục một tệp có tên là tệp Markdown có tiền tố .pdf, nghĩa là sau khi chuyển đổi tên tệp.md sẽ xuất hiện trong thư mục. tên tệp.md.pdf. Hãy gọi kịch bản md2pdf và lên đường / usr / bin. Hãy thực hiện các lệnh theo thứ tự:
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
Dòng thứ 4 thực sự chứa lệnh chuyển đổi. chú ý đến --from=markdown_github. Phiên bản GitHub của Markdown tương thích ngược với Markdown gốc, vì vậy nếu văn bản của bạn được viết trong đó, bạn không phải lo lắng. Nếu tệp MD của bạn được viết bằng một phương ngữ Markdown cụ thể, hãy đọc hướng dẫn sử dụng Pandoc (man pandoc
), đảm bảo rằng việc triển khai của bạn được nó hỗ trợ và điều chỉnh /usr/bin/md2pdf Nếu cần.
Tập lệnh để cài đặt ít nhiều tự động
Nếu bạn thực sự không muốn định cấu hình bất cứ thứ gì và bạn có một bản phân phối giống Ubuntu, bạn có thể thử tạo một tập lệnh có nội dung ẩn dưới spoiler và rất có thể mọi thứ sẽ tự cài đặt, điều duy nhất là sao chép các mẫu TeX đăng dưới spoiler trên để các bạn cần mình. Mở Terminal và chạy:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.sh
Sau đó điền vào nó với nội dung sau:
Nội dung của tập lệnh $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
Chạy nó bằng lệnh:
user@hostname:~$ sudo bash $HOME/installmd2pdf.sh
Không được quên điều đó đấy /usr/share/texlive/template.tex phải được điền như được chỉ ra trong phần "Mẫu LaTeX để chuyển đổi md2pdf" nội dung.
Sử dụng md2pdf
Chỉ cần mở thư mục có tệp Markdown (some_file.md) trong Terminal và chạy lệnh:
user@hostname:~$ md2pdf some_file.md
Kết quả là một tệp sẽ xuất hiện trong thư mục some_file.md.pdf.
Kết luận
Dựa trên phương pháp được mô tả, bạn có thể tạo bất kỳ kiểu tệp PDF nào, bạn cũng có thể chuyển đổi các định dạng khác thay vì md, bất kỳ định dạng nào được Pandoc hỗ trợ. Tôi dám hy vọng rằng một ngày nào đó hướng dẫn này sẽ hữu ích cho 3 người rưỡi.
Nguồn: www.habr.com