Przedmowa
Markdown to świetny sposób na napisanie krótkiego artykułu, a czasem całkiem sporo tekstu, z prostą kursywą i pogrubionym formatowaniem. Markdown jest również dobry do pisania artykułów z dołączonym kodem źródłowym. Ale czasami chce się bezstratnie, zatańczyć z tamburynem, żeby go wyprzedzić do zwykłego, dobrze sformatowanego PDF-a i żeby nie było problemów podczas konwersji, które np. miałem - nie da się pisać po rosyjsku w komentarze kodu źródłowego, zbyt długie linie nie są przenoszone, ale obcinane i inne drobne problemy. Instrukcja pozwoli szybko skonfigurować konwerter md2pdf bez zrozumienia, jak to naprawdę działa. Skrypt do mniej lub bardziej automatycznej instalacji znajduje się poniżej w odpowiedniej sekcji.
Mój przykładowy szablon TeX do konwersji wykorzystuje pakiet czcionek PSCyr, który obejmuje obsługę czcionek Microsoft, a mianowicie Times New Roman. Były takie wymagania dotyczące dyplomu według GOST. Jeśli wiesz jak, możesz zmodyfikować szablon do swoich potrzeb. Zgodnie z moimi instrukcjami najpierw będziesz musiał pobawić się ustawieniem PSCyr w TexLive. Konfiguracja odbywa się w dystrybucji Linux Mint Mate, w przypadku innych dystrybucji może być konieczne wyszukanie w Google standardowych folderów pakietów TexLive dla twojego systemu.
Instalacja TexLive
Oczywiście możesz zainstalować tylko niezbędne części tego pakietu. Ale osobiście byłem szczerze mówiąc zbyt leniwy, aby szukać minimalnej niezbędnej działającej instalacji. Aby upewnić się, że wszystko działa, zainstaluj cały pakiet TexLive. Nazywa się to texlive-full i waży nieco ponad 2 gigabajty, należy o tym pamiętać. Wykonujemy polecenie:
user@hostname:~$ sudo apt install texlive-full -y
Po wystarczająco długiej instalacji możesz przejść do następnego elementu.
Instalowanie konwertera Pandoc
Pandoc to pakiet Linuksa, który umożliwia konwersję niektórych formatów tekstowych na inne. Ma wiele ciekawych funkcji, które możesz znaleźć w Internecie. Interesuje nas tylko możliwość konwersji pliku przeceny do formatu PDF. Sprawdź, czy Pandoc jest zainstalowany, a jeśli nie, zainstaluj go. Na przykład tak:
user@hostname:~$ dpkg -s pandoc
Jeśli wynik mówi, że nie jest zainstalowany, zainstaluj:
user@hostname:~$ sudo apt install pandoc -y
Instalowanie pakietu PSCyr dla TexLive
Najpierw musisz pobrać PSCyr. Na razie jest jeszcze dostępny pod tym adresem
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
Następnie dowiedz się, gdzie znajduje się katalog lokalny tekstmf. Wykonujemy polecenie:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'
Najprawdopodobniej masz ten katalog - /usr/local/share/texmf/, a następnie robimy:
user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/
Cóż, albo nie możesz zawracać sobie głowy i uruchomić polecenia, które skopiuje do folderu tekstmf gdziekolwiek ona jest:
user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')
Czcionki PSCyr zainstalowane, połącz się z TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsr
Szablon LaTeX do konwersji md2pdf
Nie będę opisywał dokładnie, jak skonfigurowany jest ten szablon, i po prostu podam go pod spoilerem bez większego wyjaśnienia. Dość powiedzieć, że jest dobrze skonfigurowany, przynajmniej jeśli chodzi o obsługę tekstów z dużą ilością kodu źródłowego. Jeśli nie jesteś zadowolony z wielkości wcięć, odstępów między wierszami, braku numeracji sekcji i podrozdziałów, to moim zdaniem dość łatwo jest wpisać w google pytanie „jak to zrobić w Latexie…” i wtedy twoja potrzeba. Jeśli w ogóle nie jest to jasne, piszcie w komentarzach, postaram się zagłębić we własne ustawienia sprzed 4 lat i opisać, która linijka szablonu za co odpowiada. W międzyczasie napiszę, jak to zrobiłem na moim komputerze, a ty możesz to powtórzyć lub zmodyfikować dla siebie.
Utwórz plik szablon.tex w katalogu /usr/share/texlive/:
user@hostname:~$ sudo touch /usr/share/texlive/template.tex
Nadaj mu uprawnienia do odczytu:
user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.tex
otwórz go pod rootem i wklej do niego zawartość ukrytą pod spoilerem poniżej:
user@hostname:~$ sudo nano /usr/share/texlive/template.tex
Zawartość szablonu /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}
Zapisz plik /usr/share/texlive/template.tex i napisać skrypt, który przekonwertuje plik Makrdown do PDF, tworząc w tym samym folderze plik o nazwie plik Markdown z przedrostkiem .pdf, czyli po konwersji nazwa_pliku.md pojawi się w folderze. nazwapliku.md.pdf. Nazwijmy skrypt md2pdf i postawić na drogę / usr / bin. Wykonajmy kolejno polecenia:
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
Czwarta linia faktycznie zawiera polecenie konwersji. Zwróć uwagę na --from=markdown_github. Wersja Markdown na GitHubie jest wstecznie kompatybilna z oryginalnym Markdownem, więc jeśli Twój tekst jest w niej zapisany, nie musisz się martwić. Jeśli twój plik MD jest napisany w określonym dialekcie Markdown, przeczytaj podręcznik Pandoc (man pandoc
), upewnij się, że twoja implementacja jest przez nią obsługiwana, i dostosuj /usr/bin/md2pdf Jeśli to konieczne.
Skrypt do mniej lub bardziej automatycznej instalacji
Jeśli tak naprawdę nie chcesz nic konfigurować, a masz dystrybucję podobną do Ubuntu, możesz spróbować utworzyć skrypt z zawartością ukrytą pod spoilerem i najprawdopodobniej wszystko samo się zainstaluje, jedyne, co jest, to skopiuj szablon TeX opublikowany pod spoilerem powyżej tam, gdzie potrzebujesz. Otwórz Terminal i uruchom:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.sh
Następnie wypełnij go następującą treścią:
Zawartość skryptu $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
Uruchom go za pomocą polecenia:
user@hostname:~$ sudo bash $HOME/installmd2pdf.sh
Nie zapomnij tego /usr/share/texlive/template.tex należy wypełnić zgodnie z sekcją „Szablon LaTeX do konwersji md2pdf" treść.
Za pomocą md2pdf
Po prostu otwórz folder z plikiem Markdown (jakiś_plik.md) w Terminalu i uruchom polecenie:
user@hostname:~$ md2pdf some_file.md
W rezultacie plik pojawi się w folderze jakiś_plik.md.pdf.
wniosek
W oparciu o opisaną metodę można zbudować dowolny styl plików PDF, można także konwertować inne formaty zamiast md, dowolne obsługiwane przez Pandoc. Śmiem mieć nadzieję, że pewnego dnia ta instrukcja przyda się 3 i pół osobom.
Źródło: www.habr.com