لینکس کے لیے سورس کوڈ کے ساتھ ریڈی میڈ markdown2pdf حل

کردار

مارک ڈاون ایک مختصر مضمون لکھنے کا ایک بہترین طریقہ ہے، اور بعض اوقات کافی زیادہ متن، سادہ ترچھی اور بولڈ فارمیٹنگ کے ساتھ۔ ماخذ کوڈ کے ساتھ مضامین لکھنے کے لیے مارک ڈاؤن بھی اچھا ہے۔ لیکن کبھی کبھی آپ کھونا چاہتے ہیں، دف کے ساتھ رقص کرتے ہوئے اسے ایک باقاعدہ، اچھی طرح سے بنائی گئی پی ڈی ایف فائل میں لے جائیں، اور تاکہ تبدیلی کے دوران کوئی مسئلہ نہ ہو، جو کہ، مثال کے طور پر، مجھے تھا - آپ روسی میں نہیں لکھ سکتے۔ سورس کوڈ کے تبصرے، بہت لمبی لائنیں منتقل نہیں کی جاتی ہیں، لیکن کٹ آف اور دیگر معمولی مسائل ہیں۔ ہدایات آپ کو فوری طور پر کنورٹر سیٹ اپ کرنے کی اجازت دے گی۔ md2pdf واقعی یہ سمجھے بغیر کہ یہ کیسے کام کرتا ہے۔ کم و بیش خودکار انسٹالیشن کا اسکرپٹ مناسب سیکشن میں نیچے دیا گیا ہے۔

تبادلوں کے لیے میرا نمونہ TeX ٹیمپلیٹ PSCyr فونٹ پیکج کا استعمال کرتا ہے، جس میں Microsoft فونٹس کے لیے سپورٹ شامل ہے، یعنی ٹائمز نیو رومن. GOST کے مطابق ڈپلومہ کے لیے اس طرح کے تقاضے تھے۔ اگر آپ جانتے ہیں کہ کیسے، آپ اپنی ضروریات کے مطابق ٹیمپلیٹ میں ترمیم کر سکتے ہیں۔ میری اپنی ہدایات میں، آپ کو پہلے TexLive میں PSCyr کی ترتیب کے ساتھ بیوقوف بنانا پڑے گا۔ سیٹ اپ لینکس منٹ میٹ ڈسٹری بیوشن میں کیا جاتا ہے، دیگر ڈسٹری بیوشنز کے لیے آپ کو اپنے سسٹم کے لیے معیاری TexLive پیکج فولڈرز کو گوگل کرنا پڑ سکتا ہے۔

TexLive انسٹال کرنا

یقینا، آپ اس پیکج کے صرف ضروری حصے ہی انسٹال کر سکتے ہیں۔ لیکن ذاتی طور پر، میں کم از کم ضروری کام کرنے والی تنصیب کو تلاش کرنے کے لیے بہت سست تھا۔ یہ یقینی بنانے کے لیے کہ سب کچھ کام کرتا ہے، پورا TexLive پیکیج انسٹال کریں۔ یہ کہا جاتا ہے ٹیکسی سے بھرا ہوا اور وزن 2 گیگا بائٹس سے تھوڑا زیادہ ہے، اس حقیقت کو ذہن میں رکھیں۔ ہم کمانڈ پر عمل کرتے ہیں:

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

کافی طویل تنصیب کے بعد، آپ اگلے آئٹم پر جا سکتے ہیں۔

پانڈوک کنورٹر انسٹال کرنا

Pandoc ایک لینکس پیکیج ہے جو آپ کو کچھ ٹیکسٹ فارمیٹس کو دوسروں میں تبدیل کرنے کی اجازت دیتا ہے۔ اس میں بہت ساری دلچسپ خصوصیات ہیں جو آپ خود کو انٹرنیٹ پر تلاش کر سکتے ہیں۔ ہم صرف مارک ڈاؤن فائل کو پی ڈی ایف میں تبدیل کرنے کے امکان میں دلچسپی رکھتے ہیں۔ چیک کریں کہ آیا Pandoc انسٹال ہے اور اگر نہیں تو اسے انسٹال کریں۔ مثال کے طور پر اس طرح:

user@hostname:~$ dpkg -s pandoc

اگر آؤٹ پٹ کہتا ہے کہ یہ انسٹال نہیں ہے تو انسٹال کریں:

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

TexLive کے لیے PSCyr پیکیج انسٹال کرنا

پہلے آپ کو 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

اگلا، معلوم کریں کہ مقامی ڈائریکٹری کہاں واقع ہے۔ texmf. ہم کمانڈ پر عمل کرتے ہیں:

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

غالباً آپ کے پاس یہ ڈائریکٹری ہے - /usr/local/share/texmf/، اور پھر ہم کرتے ہیں:

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

ٹھیک ہے، یا آپ پریشان نہیں کر سکتے ہیں اور ایک کمانڈ چلا سکتے ہیں جو ایک فولڈر میں کاپی کرے گا 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

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 کے ساتھ، یعنی تبدیلی کے بعد۔ 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

چوتھی لائن دراصل کنورژن کمانڈ پر مشتمل ہے۔ متوجہ ہوں --from=markdown_github. مارک ڈاؤن کا گٹ ہب ورژن اصل مارک ڈاؤن کے ساتھ پیچھے کی طرف مطابقت رکھتا ہے، اس لیے اگر آپ کا متن اس میں لکھا ہوا ہے تو آپ کو پریشان ہونے کی ضرورت نہیں ہے۔ اگر آپ کی ایم ڈی فائل مخصوص مارک ڈاؤن بولی میں لکھی گئی ہے، تو پنڈوک مینوئل پڑھیں (man pandoc)، اس بات کو یقینی بنائیں کہ آپ کے نفاذ کو اس سے تعاون حاصل ہے، اور موافقت کریں۔ /usr/bin/md2pdf اگر ضروری ہوا.

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

اگر آپ واقعی کسی بھی چیز کو ترتیب دینا نہیں چاہتے ہیں، اور آپ کے پاس اوبنٹو جیسی تقسیم ہے، تو آپ اسپائلر کے نیچے چھپے ہوئے مواد کے ساتھ ایک اسکرپٹ بنانے کی کوشش کر سکتے ہیں، اور غالباً سب کچھ خود ہی انسٹال ہو جائے گا، صرف ایک چیز ہے، کاپی TeX ٹیمپلیٹ اوپر بگاڑنے والے کے نیچے پوسٹ کیا گیا ہے جہاں خود ضروری ہے۔ ٹرمینل کھولیں اور چلائیں:

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

پھر اسے درج ذیل مواد سے بھریں:

$HOME/instalmd2pdf.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 سیکشن میں اشارہ کے مطابق بھرنا ضروری ہےmd2pdf تبدیلی کے لیے لیٹیکس ٹیمپلیٹ» مواد۔

md2pdf استعمال کرنا

صرف مارک ڈاؤن فائل کے ساتھ فولڈر کھولیں (some_file.mdٹرمینل میں اور کمانڈ چلائیں:

user@hostname:~$ md2pdf some_file.md

نتیجے کے طور پر، فولڈر میں ایک فائل نظر آئے گی۔ some_file.md.pdf.

حاصل يہ ہوا

بیان کردہ طریقہ کی بنیاد پر، آپ پی ڈی ایف فائلوں کے کسی بھی انداز کو بنا سکتے ہیں، آپ ایم ڈی کے بجائے دیگر فارمیٹس کو بھی تبدیل کر سکتے ہیں، کسی بھی پینڈوک کے ذریعے تعاون یافتہ۔ میں امید کرتا ہوں کہ ایک دن یہ ہدایت ساڑھے 3 لوگوں کے لیے کارآمد ثابت ہوگی۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں