Linux కోసం సోర్స్ కోడ్‌తో రెడీమేడ్ markdown2pdf సొల్యూషన్

ముందుమాట

సాధారణ ఇటాలిక్ మరియు బోల్డ్ ఫార్మాటింగ్‌తో చిన్న కథనాన్ని మరియు కొన్నిసార్లు చాలా ఎక్కువ వచనాన్ని వ్రాయడానికి మార్క్‌డౌన్ ఒక గొప్ప మార్గం. సోర్స్ కోడ్‌తో కూడిన కథనాలను వ్రాయడానికి మార్క్‌డౌన్ కూడా మంచిది. కానీ కొన్నిసార్లు మీరు నిస్సత్తువగా, టాంబురైన్‌తో నృత్యం చేయాలని కోరుకుంటారు, దానిని సాధారణ, బాగా ఏర్పడిన PDF ఫైల్‌గా అధిగమించడానికి, మరియు మార్పిడి సమయంలో ఎటువంటి సమస్యలు ఉండవు, ఉదాహరణకు, నేను కలిగి ఉన్నాను - మీరు రష్యన్ భాషలో వ్రాయలేరు సోర్స్ కోడ్ యొక్క వ్యాఖ్యలు, చాలా పొడవైన పంక్తులు బదిలీ చేయబడవు, కానీ కట్ మరియు ఇతర చిన్న సమస్యలు. కన్వర్టర్‌ను త్వరగా సెటప్ చేయడానికి సూచన మిమ్మల్ని అనుమతిస్తుంది md2pdf ఇది ఎలా పని చేస్తుందో నిజంగా అర్థం చేసుకోకుండా. ఎక్కువ లేదా తక్కువ ఆటోమేటిక్ ఇన్‌స్టాలేషన్ కోసం స్క్రిప్ట్ తగిన విభాగంలో దిగువన ఉంది.

మార్పిడి కోసం నా నమూనా TeX టెంప్లేట్ PSCyr ఫాంట్ ప్యాకేజీని ఉపయోగిస్తుంది, ఇందులో Microsoft ఫాంట్‌లకు మద్దతు ఉంటుంది, అవి టైమ్స్ న్యూ రోమన్. GOST ప్రకారం డిప్లొమా కోసం ఇటువంటి అవసరాలు ఉన్నాయి. ఎలా చేయాలో మీకు తెలిస్తే, మీరు మీ అవసరాలకు అనుగుణంగా టెంప్లేట్‌ను సవరించవచ్చు. నా స్వంత సూచనలలో, మీరు ముందుగా TexLiveలో PSCyr సెట్టింగ్‌తో మోసపోవలసి ఉంటుంది. సెటప్ Linux Mint Mate పంపిణీలో చేయబడుతుంది, ఇతర పంపిణీల కోసం మీరు మీ సిస్టమ్ కోసం ప్రామాణిక 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

TexLive కోసం PSCyr ప్యాకేజీని ఇన్‌స్టాల్ చేస్తోంది

ముందుగా మీరు PSCyrని డౌన్‌లోడ్ చేసుకోవాలి. ప్రస్తుతానికి ఇది ఇప్పటికీ అందుబాటులో ఉంది లింక్, కథనాన్ని చదివే సమయంలో అది కొన్ని కారణాల వల్ల అందుబాటులో లేకుంటే, నిరాశ చెందకండి, Googleలో “PsCyr టెక్స్ట్‌లైవ్‌ని ఇన్‌స్టాల్ చేయడం” వంటి వాటిని టైప్ చేయడం ద్వారా ఇన్‌స్టాలేషన్ సూచనలతో పాటు దాన్ని కనుగొనడం సులభం. ఇది అందుబాటులో ఉంటే, అది మీకు సులభం, డౌన్‌లోడ్ చేయండి మరియు మీరు ఆర్కైవ్‌ను మీ హోమ్ ఫోల్డర్‌లోకి అన్‌ప్యాక్ చేశారని మేము అనుకుంటాము మరియు ఆ విధంగా ఆర్కైవ్‌లో ఉన్న ఫోల్డర్‌కు మార్గం ఇలా కనిపిస్తుంది ~/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 మార్పిడి కోసం LaTeX టెంప్లేట్

ఈ టెంప్లేట్ ఎలా కాన్ఫిగర్ చేయబడిందో నేను సరిగ్గా వివరించను మరియు ఎక్కువ వివరణ లేకుండా స్పాయిలర్ క్రింద ఇస్తాను. ఇది చాలా సోర్స్ కోడ్‌తో టెక్స్ట్‌లను ఎలా హ్యాండిల్ చేస్తుందనే పరంగా, ఇది బాగా కాన్ఫిగర్ చేయబడిందని చెప్పడానికి సరిపోతుంది. ఇండెంట్ల పరిమాణం, లైన్ అంతరం, విభాగాలు మరియు ఉపవిభాగాల సంఖ్య లేకపోవడంతో మీరు సంతృప్తి చెందకపోతే, నా అభిప్రాయం ప్రకారం, ఇంటర్నెట్‌లో “లాటెక్స్‌లో దీన్ని ఎలా చేయాలి ...” అనే ప్రశ్నను గూగుల్ చేయడం చాలా సులభం. అప్పుడు మీ అవసరం. ఇది స్పష్టంగా లేకుంటే, వ్యాఖ్యలలో వ్రాయండి, నేను 4 సంవత్సరాల క్రితం నా స్వంత సెట్టింగులను పరిశోధించడానికి ప్రయత్నిస్తాను మరియు టెంప్లేట్ యొక్క ఏ లైన్ దేనికి బాధ్యత వహిస్తుందో వివరిస్తాను. ఈలోగా, నేను దీన్ని నా PCలో ఎలా చేశానో వ్రాస్తాను మరియు మీ కోసం దాన్ని పునరావృతం చేయడానికి లేదా సవరించడానికి మీకు స్వేచ్ఛ ఉంది.

ఫైల్‌ను సృష్టించండి 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 మరియు Makrdown ఫైల్‌ను PDFకి మార్చే స్క్రిప్ట్‌ను వ్రాయండి, అదే ఫోల్డర్‌లో మార్క్‌డౌన్ ఫైల్ అని పిలువబడే ఫైల్‌ను .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 సంస్కరణ అసలు మార్క్‌డౌన్‌తో వెనుకకు అనుకూలంగా ఉంటుంది, కాబట్టి మీ వచనం అందులో వ్రాయబడి ఉంటే, మీరు చింతించాల్సిన అవసరం లేదు. మీ MD ఫైల్ నిర్దిష్ట మార్క్‌డౌన్ మాండలికంలో వ్రాయబడి ఉంటే, అప్పుడు 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 విభాగంలో సూచించిన విధంగా పూరించాలి "md2pdf మార్పిడి కోసం LaTeX టెంప్లేట్" విషయము.

md2pdfని ఉపయోగిస్తోంది

మార్క్‌డౌన్ ఫైల్‌తో ఫోల్డర్‌ను తెరవండి (some_file.md) టెర్మినల్‌లో మరియు ఆదేశాన్ని అమలు చేయండి:

user@hostname:~$ md2pdf some_file.md

ఫలితంగా, ఫోల్డర్‌లో ఫైల్ కనిపిస్తుంది some_file.md.pdf.

తీర్మానం

వివరించిన పద్ధతి ఆధారంగా, మీరు PDF ఫైల్‌ల యొక్క ఏదైనా శైలిని రూపొందించవచ్చు, మీరు MDకి బదులుగా ఇతర ఫార్మాట్‌లను కూడా మార్చవచ్చు, ఏదైనా Pandoc మద్దతు ఇస్తుంది. ఏదో ఒక రోజు ఈ సూచన 3న్నర మందికి ఉపయోగకరంగా ఉంటుందని నేను ఆశిస్తున్నాను.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి