Forord
Markdown er en fantastisk måde at skrive en lille artikel, og nogle gange også en ret omfattende tekst, med enkle formateringer som kursiv og fed skrift. Markdown er også godt til at skrive artikler med indhold af kildekode. Men nogle gange vil man uden tab og med lidt besvær gerne konvertere det til en almindelig, godt formateret PDF-fil, så der ikke opstår problemer under konverteringen, som for eksempel dem, jeg havde – man kan ikke skrive på russisk i kommentarerne i kildekoden, for lange linjer bliver ikke brudt, men skåret af, og andre små problemer. Denne vejledning vil gøre det muligt hurtigt at sætte konverteren op. md2pdf uden at vide præcist hvordan det fungerer. Skriptet til en mere eller mindre automatisk installation findes nedenfor i den relevante sektion.
Mit eksempel på en TeX-skabelon til konvertering bruger PSCyr fontpakken, som inkluderer understøttelse af Microsoft skrifttyper, nemlig Times New Roman. Sådan var kravene til eksamensbeviset ifølge GOST. Hvis du kan, kan du modificere skabelonen til dine egne behov. I min vejledning skal man dog først bøvle lidt med opsætningen af PSCyr i TexLive. Opsætningen udføres i Linux Mint Mate-distributionen; for andre distributioner må man måske lige google de standard mapper for TexLive-pakken til dit system.
Installation af TexLive
Selvfølgelig kan man kun installere de nødvendige dele af denne pakke. Men personligt havde jeg ærligt talt ikke lyst til at finde den mindst mulige arbejdsmæssige installation. For at sikre at alt virker korrekt, installerer vi hele TexLive-pakken. Den hedder texlive-full og vejer lidt over 2 gigabyte, så husk dette faktum. Udfør kommandoen:
user@hostname:~$ sudo apt install texlive-full -yEfter en ret lang installation kan vi gå videre til næste punkt.
Installation af konverteren Pandoc
Pandoc er en Linux-pakke, der gør det muligt at konvertere nogle tekstformater til andre. Den har mange interessante funktioner, som du kan undersøge selv på internettet. Vi er dog kun interesserede i muligheden for at konvertere en markdown-fil til PDF. Lad os tjekke om Pandoc er installeret og, hvis ikke, installere det. For eksempel sådan:
user@hostname:~$ dpkg -s pandocHvis output siger, at det ikke er installeret – installer det:
user@hostname:~$ sudo apt install pandoc -yInstallation af PSCyr-pakken til TexLive
Først skal du downloade PSCyr. Den er stadig tilgængelig der. , hvis artiklen på tidspunktet for læsningen ikke er tilgængelig af en eller anden grund, skal du ikke fortvivle, den er let at finde sammen med installationsvejledningen ved at søge på Google efter noget som "Installation af PsCyr texlive". Hvis den er tilgængelig, er det lettere for dig, download og lad os antage, at du har udpakket arkivet i din hjemme-mappe, og således ser stien til mappen, der findes i arkivet, således ud som ~/PSCyr. Så åbner vi Terminalen og udfører kommandoerne en efter en:
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.mapDernæst finder vi ud af, hvor den lokale mappe er texmf. Udfør kommandoen:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'Dette katalog vil sandsynligvis være hos dig — /usr/local/share/texmf/, og så udfører vi:
user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/Eller man kan nøjes med at udføre kommandoen, der kopierer til mappen texmf uanset hvor den er:
user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')PSCyr-skrifttyperne er installeret, tilslut dem i TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsrLaTeX skabelon til konvertering af md2pdf
Jeg vil ikke beskrive, hvordan denne skabelon er konfigureret, og giver bare dens indhold under spoiler uden særlig forklaring. Det er tilstrækkeligt at sige, at den er rimeligt konfigureret, i det mindste hvad angår behandlingen af tekster med mange koder. Hvis du ikke er tilfreds med indrykningsstørrelserne, linjeafstandene, fraværet af sektions- og undersektionsnumre, så er det efter min mening ret nemt at google spørgsmålet "hvordan man gør i Latex..." og så dine behov. Hvis det stadig er uklart, skriv i kommentarerne, så vil jeg forsøge at dykke ned i mine egne indstillinger fra for fire år siden og beskrive, hvilken linje i skabelonen der gør hvad. Indtil da vil jeg beskrive, hvordan jeg gjorde på min PC, og du er fri til at gentage eller modificere det til dine behov.
Opret filen template.tex i katalogen /usr/share/texlive/:
user@hostname:~$ sudo touch /usr/share/texlive/template.texGiv den læserettigheder:
user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.texåbner som root og indsætter indholdet skjult under spoileren nedenfor:
user@hostname:~$ sudo nano /usr/share/texlive/template.texIndholdet af skabelonen /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[danish,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}Gemmer filen /usr/share/texlive/template.tex og skriv et script, der konverterer Markdown-filer til PDF og opretter en fil i den samme mappe med navnet på Markdown-filen med suffikset .pdf, dvs. efter konverteringen. filename.md vil der være en mappe filename.md.pdf. Vi kalder scriptet md2pdf og placerer det i stien /usr/bin. Udfør 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 fjerde linje er kommandoen til konvertering faktisk angivet. Bemærk venligst —from=markdown_github. GitHub-versionen af Markdown er bagudkompatibel med den oprindelige Markdown, så hvis din tekst er skrevet i den, behøver du ikke at bekymre dig. Hvis din MD-fil derimod er skrevet i en specifik dialekt af Markdown, kan du læse manualen til Pandoc (man pandoc), sørge for, at din implementering understøtter den, og rette til /usr/bin/md2pdf om nødvendigt.
Script til en mere eller mindre automatisk installation
Hvis du ikke har lyst til at konfigurere noget som helst, og du har en Ubuntu-lignende distribution, kan du prøve at oprette et script med indholdet gemt under spoileren, og så vil det sandsynligvis installeres af sig selv. Det eneste, du selv skal gøre, er at kopiere TeX-skabelonen, der er blevet lagt under spoileren ovenfor, til det rette sted. Åbn Terminal og udfør:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.shFyld derefter dette indhold i den:
Indholdet af 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/md2pdfKør det med kommandoen:
user@hostname:~$ sudo bash $HOME/installmd2pdf.shHusk, at /usr/share/texlive/template.tex du skal udfylde det angivne indhold under "LaTeX skabelon til konvertering af md2pdf".
Brug af md2pdf
Åbn blot mappen med Markdown-filen (some_file.md) i Terminalen, og udfør kommandoen:
user@hostname:~$ md2pdf some_file.mdSom resultat vil der dukke en fil op i mappen some_file.md.pdf.
Konklusion
Baseret på den beskrevne metode kan der opbygges enhver stil af PDF-filer, og det er også muligt at konvertere andre formater end md, så længe de understøttes af Pandoc. Jeg tør håbe, at denne vejledning en dag vil være nyttig for tre og en halv person.
Kilde: habr.com
