ዝግጁ-የተሰራ markdown2pdf መፍትሄ ለሊኑክስ ምንጭ ኮድ

መቅድም

ማርክ ዳውድ አጭር ጽሑፍን እና አንዳንዴም በጣም ብዙ ጽሑፍን በቀላል ሰያፍ እና ደማቅ ቅርጸት ለመጻፍ ጥሩ መንገድ ነው። Markdown ከምንጭ ኮድ ጋር መጣጥፎችን ለመጻፍም ጥሩ ነው። ነገር ግን አንዳንድ ጊዜ ያለማጣት ይፈልጋሉ, ወደ መደበኛ, በደንብ-የተቋቋመው ፒዲኤፍ ፋይል ውስጥ ለመቅደም ከበሮ ጋር መደነስ, እና ልወጣ ወቅት ምንም ችግር የለም ስለዚህም, ለምሳሌ, እኔ ነበር ይህም - በሩሲያኛ ውስጥ መጻፍ አይችሉም. የምንጭ ኮድ አስተያየቶች, በጣም ረጅም መስመሮች አይተላለፉም, ነገር ግን የተቆረጡ እና ሌሎች ጥቃቅን ችግሮች. መመሪያው መቀየሪያውን በፍጥነት እንዲያዘጋጁ ይፈቅድልዎታል md2pdf በትክክል እንዴት እንደሚሰራ ሳይረዱ. ለበለጠ ወይም ባነሰ አውቶማቲክ ጭነት ያለው ስክሪፕት በተገቢው ክፍል ውስጥ ከዚህ በታች ይገኛል።

የእኔ ናሙና TeX ለመለወጥ አብነት የPSCyr ቅርጸ-ቁምፊ ጥቅልን ይጠቀማል፣ እሱም የማይክሮሶፍት ፎንቶች ድጋፍን ያካትታል Times ኒው ሮማን. በ GOST መሠረት ለዲፕሎማ እንደዚህ ያሉ መስፈርቶች ነበሩ. እንዴት እንደሆነ ካወቁ፣ ለፍላጎትዎ የሚስማማውን አብነት ማስተካከል ይችላሉ። በራሴ መመሪያ በመጀመሪያ በTexLive ውስጥ ባለው የPSCyr መቼት ማሞኘት አለቦት። ማዋቀሩ በLinux Mint Mate ስርጭቱ ውስጥ ተከናውኗል፣ ለሌሎች ስርጭቶች መደበኛውን የTexLive ጥቅል አቃፊዎችን ለስርዓትዎ ጎግል ማድረግ ሊኖርብዎ ይችላል።

TexLive ን በመጫን ላይ

እርግጥ ነው, የዚህን ጥቅል አስፈላጊ ክፍሎች ብቻ መጫን ይችላሉ. ነገር ግን በግሌ፣ በትንሹ አስፈላጊ የሆነውን የመጫን ሥራ ለመፈለግ በጣም ሰነፍ ነበርኩ። ሁሉም ነገር መስራቱን ለማረጋገጥ፣ ሙሉውን የTexLive ጥቅል ይጫኑ። ይባላል የጨርቃጨርቅ ሙሉ እና ክብደቱ ከ 2 ጊጋባይት በላይ ትንሽ ነው, ይህንን እውነታ ግምት ውስጥ ያስገቡ. ትዕዛዙን እንፈጽማለን-

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

በቂ የሆነ ረጅም ጭነት ከተጫነ በኋላ ወደሚቀጥለው ንጥል መቀጠል ይችላሉ.

Pandoc መለወጫ በመጫን ላይ

Pandoc አንዳንድ የጽሑፍ ቅርጸቶችን ወደ ሌሎች ለመለወጥ የሚያስችል የሊኑክስ ጥቅል ነው። በይነመረብ ላይ እራስዎን ሊያገኟቸው የሚችሉ ብዙ አስደሳች ባህሪያት አሉት. እኛ ፍላጎት ያለን የማርክ ማድረጊያ ፋይልን ወደ ፒዲኤፍ የመቀየር እድል ብቻ ነው። Pandoc መጫኑን ያረጋግጡ እና ካልሆነ ይጫኑት። ለምሳሌ እንደዚህ፡-

user@hostname:~$ dpkg -s pandoc

ውጤቱ አልተጫነም ካለ፣ ጫን፡-

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

ለTexLive የPSCyr ጥቅል በመጫን ላይ

በመጀመሪያ PSCyr ን ማውረድ ያስፈልግዎታል. ለአሁን አሁንም በዚህ ላይ ይገኛል። ማያያዣ, ጽሑፉን በሚያነቡበት ጊዜ በሆነ ምክንያት የማይገኝ ከሆነ, ተስፋ አትቁረጡ, በ Google ውስጥ እንደ "የ 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 ልወጣ

ይህ አብነት በትክክል እንዴት እንደተዋቀረ አልገልጽም እና ብዙ ማብራሪያ ሳይኖር በቀላሉ በአበላሹ ስር እሰጠዋለሁ። በጥሩ ሁኔታ የተዋቀረ ነው ብሎ መናገር በቂ ነው፣ ቢያንስ ብዙ የምንጭ ኮድ ያላቸውን ጽሑፎች እንዴት እንደሚይዝ። በመግቢያዎች መጠን ፣ በመስመር ክፍተት ፣ በክፍሎች እና በንዑስ ክፍሎች ብዛት ካልረኩ ታዲያ በእኔ አስተያየት “በ Latex ውስጥ እንዴት እንደሚደረግ…” የሚለውን ጥያቄ በይነመረብ ላይ google ማድረግ ቀላል ነው ። ከዚያም የእርስዎን ፍላጎት. ግልጽ ካልሆነ በአስተያየቶቹ ውስጥ ይፃፉ ፣ ከ 4 ዓመታት በፊት ወደ ራሴ መቼቶች ውስጥ ለመግባት እሞክራለሁ እና የትኛው የአብነት መስመር ለምን ተጠያቂ እንደሆነ ለመግለጽ እሞክራለሁ። እስከዚያ ድረስ በፒሲዬ ላይ እንዴት እንዳደረግኩት እጽፋለሁ, እና እርስዎ እራስዎ ለመድገም ወይም ለማሻሻል ነጻ ነዎት.

ፋይል ይፍጠሩ አብነት.ቴክስ በካታሎግ ውስጥ /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 እና የማክርዳውን ፋይል ወደ ፒዲኤፍ የሚቀይር ስክሪፕት ይፃፉ፣ በተመሳሳይ ፎልደር ውስጥ የማርክdown ፋይል የሚባል ፋይል ከቅድመ ቅጥያ .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. የ GitHub የማርክዳውን ስሪት ከዋነኛው Markdown ጋር ወደ ኋላ ተኳሃኝ ነው፣ ስለዚህ የእርስዎ ጽሑፍ በውስጡ ከተፃፈ መጨነቅ አይኖርብዎትም። የእርስዎ MD ፋይል በተለየ የማርክዳው ዘዬ ከተፃፈ፣ በመቀጠል Pandoc ማኑዋልን ያንብቡ (man pandoc), የእርስዎ ትግበራ በእሱ የተደገፈ መሆኑን ያረጋግጡ እና ያስተካክሉ /usr/bin/md2pdf አስፈላጊ ከሆነ.

ስክሪፕት ለብዙ ወይም ያነሰ አውቶማቲክ ጭነት

ምንም ነገር ማዋቀር የማይፈልጉ ከሆነ እና እንደ ኡቡንቱ አይነት ስርጭት ካለዎት በአጥፊው ስር የተደበቁትን ይዘቶች የያዘ ስክሪፕት ለመፍጠር መሞከር ይችላሉ ፣ እና ሁሉም ነገር እራሱን ይጭናል ፣ ብቸኛው ነገር መቅዳት ነው። የቴኤክስ አብነት ራሳቸው አስፈላጊ በሆነበት ቦታ ከላይ ባለው አጥፊ ስር ተለጠፈ። ተርሚናል ይክፈቱ እና ያሂዱ፡-

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 በመጠቀም

ማህደሩን በማርከዳው ፋይል ብቻ ይክፈቱ (አንዳንድ_ፋይል.md) በተርሚናል ውስጥ እና ትዕዛዙን ያሂዱ:

user@hostname:~$ md2pdf some_file.md

በዚህ ምክንያት አንድ ፋይል በአቃፊው ውስጥ ይታያል አንዳንድ_ፋይል.md.pdf.

መደምደሚያ

በተገለፀው ዘዴ ላይ በመመስረት ማንኛውንም የፒዲኤፍ ፋይሎችን መገንባት ይችላሉ ፣ እንዲሁም ከኤምዲ ይልቅ ሌሎች ቅርጸቶችን መለወጥ ይችላሉ ፣ ማንኛውም በ Pandoc የሚደገፍ። አንድ ቀን ይህ መመሪያ ለ 3 ተኩል ሰዎች ጠቃሚ እንደሚሆን ተስፋ ለማድረግ እደፍራለሁ።

ምንጭ: hab.com

አስተያየት ያክሉ