Forord
Markdown er en flott mÄte Ä skrive en liten artikkel pÄ, og noen ganger kan det ogsÄ vÊre noksÄ omfattende tekst, med enkel formatering i form av kursiv og fet skrift. Markdown er ogsÄ bra for Ä skrive artikler som inkluderer kodesnutter. Men noen ganger Þnsker man Ä konvertere dette til en vanlig, godt formatert PDF-fil uten tap eller problemer ved konverteringen, som for eksempel de jeg har hatt - man kan ikke skrive pÄ russisk i kommentarene til koden, for lange linjer brytes ikke og andre smÄ problemer. Denne guiden vil raskt konfigurere konvertereren. md2pdf uten Ä gÄ sÊrlig inn i hvordan det fungerer. Skriptet for en mer eller mindre automatisk installasjon er nedenfor i den relevante seksjonen.
Mitt eksempel TeX-mal for konvertering bruker fonts-pakken PSCyr, som inkluderer stÞtte for Microsoft-skrifter, nemlig Times New Roman. Slike krav ble stilt for diplomet i henhold til GOST. Hvis du kan, kan du modifisere malen etter behov. I min veiledning mÄ man imidlertid fÞrst gjÞre litt arbeid med Ä konfigurere PSCyr i TexLive. Konfigurasjonen er utfÞrt i Linux Mint Mate-distribusjonen, for andre distribusjoner mÄ man muligens google de standard mappene til TexLive-pakken for systemet ditt.
Installasjon av TexLive
SelvfĂžlgelig kan man bare installere de nĂždvendige delene av denne pakken. Men jeg var rett og slett for lat til Ă„ lete etter en minimum nĂždvendig arbeidsinstallasjon. For Ă„ sikre at alt fungerer nĂžyaktig, installerer vi hele TexLive-pakken. Den heter texlive-full og veier litt over 2 gigabyte, husk dette faktum. Vi utfĂžrer kommandoen:
user@hostname:~$ sudo apt install texlive-full -yEtter en relativt lang installasjon kan vi gÄ til neste punkt.
Installasjon av konvertereren Pandoc
Pandoc er en Linux-pakke som gjÞr det mulig Ä konvertere noen tekstformater til andre. Den har mange interessante funksjoner som du kan finne ut av selv pÄ internett. Vi er imidlertid bare interessert i muligheten for Ä konvertere markdown-filer til PDF. La oss sjekke om Pandoc er installert, og hvis ikke, sÄ installer vi det. For eksempel slik:
user@hostname:~$ dpkg -s pandocHvis det i utdataene stÄr at det ikke er installert - installer:
user@hostname:~$ sudo apt install pandoc -yInstallasjon av PSCyr-pakken for TexLive
For Ä begynne mÄ du laste ned PSCyr. Det er fremdeles tilgjengelig her. , hvis artikkelen pÄ lesetidspunktet av en eller annen grunn ikke er tilgjengelig, ikke fortvil, det er ikke vanskelig Ä finne sammen med installasjonsveiledningen ved Ä sÞke i Google etter noe som "Installasjon av PsCyr texlive". Hvis den er tilgjengelig, er det enklere for deg, last ned og vi kan anta at du har pakket ut arkivet i hjemmemappen din, og dermed ser banen til mappen som er i arkivet ut som ~\/PSCyr. Da gÄr vi til Terminalen og utfÞrer kommandoene:
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.mapVidere finner vi ut hvor den lokale katalogen ligger texmf. UtfĂžr kommandoen:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'Sannsynligvis er denne katalogen din - /usr/local/share/texmf/, og sÄ utfÞrer vi:
user@hostname:~$ sudo cp -R .\/PSCyr\/* \/usr\/local\/share\/texmf\/Eller du kan enkelt utfĂžre kommandoen som kopierer til mappen texmf uansett hvor den er:
user@hostname:~$ sudo cp -R .\/PSCyr\/* $(kpsewhich -expand-var='$TEXMFLOCAL')PSCyr-fontene er installert, koble til i TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsrLaTeX-mal for konvertering md2pdf
Jeg vil ikke beskrive hvordan denne malen er konfigurert, jeg vil bare vise den i en spoiler uten mye forklaring. Bare si at den er godt konfigurert, i hvert fall hvordan den behandler tekster med mye kildekode. Hvis du ikke er fornÞyd med stÞrrelsene pÄ innrykk, linjeavstand, mangel pÄ nummerering av seksjoner og underseksjoner, sÄ mener jeg det er ganske lett Ä google spÞrsmÄlet pÄ internett "hvordan man gjÞr i Latex..." og videre til dine behov. Hvis det er helt uklart, skriv i kommentarene, sÄ skal jeg prÞve Ä huske mine egne innstillinger fra for 4 Är siden og forklare hva hver linje av malen svarer for. ForelÞpig vil jeg skrive hvordan jeg gjorde det pÄ PC-en min, og du stÄr fritt til Ä gjenta eller modifisere det til ditt eget.
Opprett en fil template.tex i katalogen /usr/share/texlive/:
user@hostname:~$ sudo touch \/usr\/share\/texlive\/template.texGi den leserettigheter:
user@hostname:~$ sudo chmod 444 \/usr\/share\/texlive\/template.texÄpne den som root og lim inn innholdet som er skjult under spoileren nedenfor:
user@hostname:~$ sudo nano \/usr\/share\/texlive\/template.texInnholdet i malen \/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}Lagring filen /usr/share/texlive/template.tex og skriver et skript som vil konvertere Markdown-filen til PDF, og oppretter i samme mappe en fil med navnet pÄ Markdown-filen med endelsen .pdf, det vil si etter konverteringen filename.md i mappen vil det vises filename.md.pdf. Vi kaller skriptet md2pdf og plasserer det pÄ stien /usr/bin. Vi utfÞrer fÞlgende kommandoer:
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\/md2pdfI den 4. linjen er kommandoen for konvertering spesifisert. VĂŠr oppmerksom pĂ„ âfrom=markdown_githubGitHub-versjonen av Markdown er bakoverkompatibel med original Markdown, sĂ„ hvis teksten din er skrevet med den, trenger du ikke Ă„ bekymre deg. Hvis MD-filen din derimot er skrevet med en spesifikk dialekt av Markdown, kan du lese manualen for Pandoc (man pandoc), sĂžrge for at implementeringen din stĂžttes, og justere /usr/bin/md2pdf om nĂždvendig.
Et skript for mer eller mindre automatisk installasjon
Hvis du ikke Þnsker Ä konfigurere noe i det hele tatt, og har en Ubuntu-lignende distribusjon, kan du prÞve Ä lage et skript med innholdet skjult under spoileren, og mest sannsynlig vil alt bli installert automatisk. Bare husk at TeX-malen som er lagt ut under spoileren ovenfor, mÄ du kopiere selv. à pne Terminal og kjÞr:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.shDeretter fyll det med fĂžlgende innhold:
Innholdet i skriptet $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/md2pdfKjĂžr det med kommandoen:
user@hostname:~$ sudo bash $HOME/installmd2pdf.shHusk at /usr/share/texlive/template.tex du mÄ fylle det med innholdet angitt i seksjonen «LaTeX-mal for konvertering md2pdf».
Bruk av md2pdf
Bare Äpne mappen med Markdown-filen (some_file.md) i Terminal, og kjÞr kommandoen:
user@hostname:~$ md2pdf some_file.mdSom et resultat vil en fil bli opprettet i mappen. some_file.md.pdf.
Konklusjon
Basert pÄ den beskrevne metoden kan du lage hvilken som helst stil pÄ PDF-filer, og du kan ogsÄ konvertere andre formater enn md, sÄ lenge de stÞttes av Pandoc. Jeg hÄper at denne instruksjonen vil komme til nytte for 3,5 personer en dag.
Kilde: habr.com
