Prefácio
Markdown é uma ótima maneira de escrever um artigo curto e, às vezes, bastante texto, com formatação simples em itálico e negrito. Markdown também é bom para escrever artigos com código-fonte incluído. Mas às vezes você quer dançar sem perder com um pandeiro para ultrapassá-lo em um arquivo PDF regular e bem formado, e para que não haja problemas durante a conversão, o que, por exemplo, eu tive - você não pode escrever em russo em os comentários do código-fonte, linhas muito longas não são transferidas, mas cortadas e outros problemas menores. A instrução permitirá que você configure rapidamente o conversor md2pdf sem realmente entender como funciona. O script para uma instalação mais ou menos automática está abaixo na seção apropriada.
Meu modelo TeX de amostra para conversão usa o pacote de fontes PSCyr, que inclui suporte para fontes da Microsoft, ou seja, Times New Roman. Existiam tais requisitos para um diploma de acordo com o GOST. Se você souber como, poderá modificar o modelo para atender às suas necessidades. Em minhas próprias instruções, primeiro você terá que brincar com a configuração PSCyr no TexLive. A configuração é feita na distribuição Linux Mint Mate, para outras distribuições você pode ter que pesquisar no Google as pastas de pacotes TexLive padrão para o seu sistema.
Instalando o TexLive
Claro, você pode instalar apenas as partes necessárias deste pacote. Mas, pessoalmente, eu estava francamente com preguiça de procurar a instalação de trabalho mínima necessária. Para garantir que tudo funcione, instale todo o pacote TexLive. é chamado texlive-completo e pesa um pouco mais de 2 gigabytes, lembre-se disso. Executamos o comando:
user@hostname:~$ sudo apt install texlive-full -y
Após uma instalação suficientemente longa, você pode prosseguir para o próximo item.
Instalando o Conversor Pandoc
Pandoc é um pacote Linux que permite converter alguns formatos de texto para outros. Tem muitos recursos interessantes que você pode encontrar na Internet. Estamos interessados apenas na possibilidade de converter um arquivo markdown em PDF. Verifique se o Pandoc está instalado e, se não, instale-o. Por exemplo assim:
user@hostname:~$ dpkg -s pandoc
Se a saída disser que não está instalado, instale:
user@hostname:~$ sudo apt install pandoc -y
Instalando o pacote PSCyr para TexLive
Primeiro você precisa baixar o PSCyr. Por enquanto ainda está disponível neste
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
Em seguida, descubra onde o diretório local está localizado texto. Executamos o comando:
user@hostname:~$ kpsewhich -expand-var='$TEXMFLOCAL'
Provavelmente você tem este diretório - /usr/local/share/texmf/, e então fazemos:
user@hostname:~$ sudo cp -R ./PSCyr/* /usr/local/share/texmf/
Bem, ou você não pode se incomodar e executar um comando que irá copiar para uma pasta texto onde quer que ela esteja:
user@hostname:~$ sudo cp -R ./PSCyr/* $(kpsewhich -expand-var='$TEXMFLOCAL')
Fontes PSCyr instaladas, conecte-se ao TexLive:
user@hostname:~$ sudo texhash
user@hostname:~$ updmap --enable Map=pscyr.map
user@hostname:~$ sudo mktexlsr
Modelo LaTeX para conversão md2pdf
Não vou descrever exatamente como este modelo está configurado, e simplesmente vou dar no spoiler sem muita explicação. Basta dizer que está bem configurado, pelo menos no que diz respeito à forma como lida com textos com muito código-fonte. Se você não está satisfeito com o tamanho dos recuos, espaçamento entre linhas, falta de numeração de seções e subseções, então, na minha opinião, é muito fácil pesquisar no Google a pergunta “como fazer isso em látex ...” e então sua necessidade. Se não estiver claro, escreva nos comentários, tentarei me aprofundar em minhas próprias configurações há 4 anos e descrever qual linha do modelo é responsável por quê. Nesse ínterim, escreverei como fiz isso no meu PC e você poderá repetir ou modificar por si mesmo.
Criar um arquivo modelo.tex no catálogo /usr/share/texlive/:
user@hostname:~$ sudo touch /usr/share/texlive/template.tex
Dê permissões de leitura:
user@hostname:~$ sudo chmod 444 /usr/share/texlive/template.tex
abra-o na raiz e cole o conteúdo oculto no spoiler abaixo:
user@hostname:~$ sudo nano /usr/share/texlive/template.tex
Conteúdo do modelo /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}
Salvando o arquivo /usr/share/texlive/template.tex e escreva um script que irá converter o arquivo Makrdown para PDF, criando na mesma pasta um arquivo chamado arquivo Markdown com o prefixo .pdf, ou seja, após a conversão nome do arquivo.md aparecerá na pasta. nome do arquivo.md.pdf. Vamos chamar o script md2pdf e colocar no caminho / usr / bin. Vamos executar os comandos em sequência:
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
A quarta linha realmente contém o comando de conversão. prestar atenção em --from=markdown_github. A versão do GitHub do Markdown é compatível com o Markdown original, portanto, se o seu texto estiver escrito nele, você não precisa se preocupar. Se o seu arquivo MD estiver escrito em um dialeto Markdown específico, leia o manual do Pandoc (man pandoc
), certifique-se de que sua implementação seja suportada por ele e ajuste /usr/bin/md2pdf se necessário.
Script para instalação mais ou menos automática
Se você realmente não deseja configurar nada e possui uma distribuição semelhante ao Ubuntu, pode tentar criar um script com o conteúdo oculto sob o spoiler e, provavelmente, tudo será instalado sozinho, a única coisa é copiar o modelo TeX postado no spoiler acima, quando necessário. Abra o Terminal e execute:
user@hostname:~$ cd
user@hostname:~$ touch installmd2pdf.sh
Em seguida, preencha-o com o seguinte conteúdo:
O conteúdo do script $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
Execute-o com o comando:
user@hostname:~$ sudo bash $HOME/installmd2pdf.sh
Não esqueça isto /usr/share/texlive/template.tex deve ser preenchido conforme indicado na seção "Modelo LaTeX para conversão md2pdf" contente.
Usando md2pdf
Basta abrir a pasta com o arquivo Markdown (algum_arquivo.md) no Terminal e execute o comando:
user@hostname:~$ md2pdf some_file.md
Como resultado, um arquivo aparecerá na pasta algum_arquivo.md.pdf.
Conclusão
Com base no método descrito, você pode criar qualquer estilo de arquivo PDF, também pode converter outros formatos em vez de md, qualquer um suportado pelo Pandoc. Atrevo-me a esperar que um dia esta instrução seja útil para 3 pessoas e meia.
Fonte: habr.com