راه حل آماده markdown2pdf با کد منبع برای لینوکس

پیش گفتار

Markdown روشی عالی برای نوشتن یک مقاله کوتاه، و گاهی اوقات متن بسیار زیاد، با قالب بندی ساده ایتالیک و پررنگ است. Markdown همچنین برای نوشتن مقالات با کد منبع مناسب است. اما گاهی اوقات شما می خواهید بدون ضرر، با یک تنبور برقصید تا از آن سبقت بگیرید و به یک فایل پی دی اف معمولی و خوش فرم تبدیل شوید، و به طوری که در هنگام تبدیل مشکلی نداشته باشید، که مثلاً من داشتم - نمی توانید به زبان روسی بنویسید. نظرات کد منبع، خطوط بیش از حد طولانی منتقل نمی شود، اما برش و سایر مشکلات جزئی. این دستورالعمل به شما امکان می دهد تا به سرعت مبدل را راه اندازی کنید md2pdf بدون اینکه واقعاً بفهمیم چگونه کار می کند. اسکریپت نصب کم و بیش خودکار در قسمت مربوطه در زیر آمده است.

الگوی نمونه TeX من برای تبدیل از بسته فونت PSCyr استفاده می کند که شامل پشتیبانی از فونت های مایکروسافت است. بار جدید روم. طبق GOST چنین الزاماتی برای دیپلم وجود داشت. اگر می دانید چگونه می توانید الگو را مطابق با نیاز خود تغییر دهید. طبق دستورالعمل های خودم، ابتدا باید تنظیمات PSCyr را در TexLive فریب دهید. راه‌اندازی در توزیع Linux Mint Mate انجام می‌شود، برای سایر توزیع‌ها ممکن است مجبور شوید پوشه‌های بسته استاندارد TexLive را برای سیستم خود جستجو کنید.

نصب TexLive

البته شما فقط می توانید قطعات ضروری این پکیج را نصب کنید. اما شخصاً من رک و پوست کنده بودم که به دنبال حداقل نصب کاری لازم باشم. برای اینکه مطمئن شوید همه چیز کار می کند، کل بسته TexLive را نصب کنید. نامیده می شود متن کامل و وزن آن کمی بیشتر از 2 گیگابایت است، این واقعیت را در نظر داشته باشید. ما دستور را اجرا می کنیم:

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

پس از نصب به اندازه کافی طولانی، می توانید به مورد بعدی بروید.

نصب مبدل Pandoc

Pandoc یک بسته لینوکس است که به شما امکان می دهد برخی از فرمت های متن را به فرمت های دیگر تبدیل کنید. دارای بسیاری از ویژگی های جالب است که می توانید خودتان را در اینترنت بیابید. ما فقط علاقه مند به امکان تبدیل یک فایل علامت گذاری به PDF هستیم. بررسی کنید که آیا Pandoc نصب شده است یا نه، آن را نصب کنید. به عنوان مثال مانند این:

user@hostname:~$ dpkg -s pandoc

اگر خروجی می گوید که نصب نیست، نصب کنید:

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

نصب بسته PSCyr برای TexLive

ابتدا باید PSCyr را دانلود کنید. هنوز در این مورد موجود است پیوند، اگر در زمان خواندن مقاله به دلایلی در دسترس نیست، ناامید نشوید، با تایپ چیزی مانند "نصب 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

بعد، پیدا کنید که دایرکتوری محلی در کجا قرار دارد textmf. ما دستور را اجرا می کنیم:

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

به احتمال زیاد شما این دایرکتوری را دارید - /usr/local/share/texmf/، و سپس انجام می دهیم:

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

خوب، یا نمی توانید زحمت بکشید و دستوری را اجرا کنید که در یک پوشه کپی می شود textmf هر کجا که هست:

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

من دقیقاً نحوه پیکربندی این قالب را توضیح نمی دهم و به سادگی آن را بدون توضیح زیاد در زیر اسپویلر قرار می دهم. کافی است بگوییم که به خوبی پیکربندی شده است، حداقل از نظر نحوه مدیریت متون با کد منبع زیاد. اگر از اندازه تورفتگی ها، فاصله خطوط، عدم شماره گذاری بخش ها و زیربخش ها راضی نیستید، به نظر من جستجو کردن سؤال در اینترنت "چگونه این کار را در لاتکس انجام دهیم ..." بسیار آسان است و سپس نیاز شما اگر اصلاً واضح نیست ، در نظرات بنویسید ، سعی می کنم تنظیمات 4 سال پیش خودم را بررسی کنم و توضیح دهم که کدام خط قالب مسئول چه چیزی است. در ضمن، من یادداشت می کنم که چگونه این کار را در رایانه شخصی خود انجام دادم و شما آزاد هستید که آن را برای خود تکرار یا اصلاح کنید.

یک فایل ایجاد کنید template.tex در کاتالوگ /usr/share/texlive/:

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 و یک اسکریپت بنویسید که فایل مکردون را به PDF تبدیل کند و در همان پوشه فایلی به نام فایل Markdown با پیشوند pdf ایجاد کنید، یعنی بعد از تبدیل. filename.md در پوشه ظاهر می شود. filename.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 در واقع حاوی دستور تبدیل است. توجه کن به --from=markdown_github. نسخه GitHub Markdown با نسخه اصلی Markdown سازگار است، بنابراین اگر متن شما در آن نوشته شده است، لازم نیست نگران باشید. اگر فایل MD شما با یک گویش Markdown خاص نوشته شده است، راهنمای Pandoc را بخوانید (man pandoc)، مطمئن شوید که پیاده سازی شما توسط آن پشتیبانی می شود، و دستکاری کنید /usr/bin/md2pdf در صورت لزوم

اسکریپت برای نصب کم و بیش خودکار

اگر واقعاً نمی خواهید چیزی را پیکربندی کنید و توزیعی شبیه به اوبونتو دارید، می توانید یک اسکریپت با محتویات پنهان شده در زیر اسپویلر ایجاد کنید، و به احتمال زیاد همه چیز خود به خود نصب می شود، تنها چیز این است که کپی کنید. قالب TeX در زیر اسپویلر بالا به جایی که شما نیاز دارید ارسال شده است. ترمینال را باز کنید و اجرا کنید:

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) در ترمینال و دستور را اجرا کنید:

user@hostname:~$ md2pdf some_file.md

در نتیجه یک فایل در پوشه ظاهر می شود some_file.md.pdf.

نتیجه

بر اساس روش توصیف شده، می توانید هر سبکی از فایل های PDF بسازید، همچنین می توانید فرمت های دیگر را به جای md، هر کدام که توسط Pandoc پشتیبانی می شود، تبدیل کنید. به جرات می توانم امیدوار باشم که روزی این آموزش برای 3 نفر و نیم مفید باشد.

منبع: www.habr.com

اضافه کردن نظر