Início > latex, tutorial > Latex – minted

Latex – minted

Com o mestrado, peguei gosto por usar o LaTeX, um sistema de formatação de documentos. Procurando por uma forma melhor de expor códigos nos documentos, com syntax highlighting, cheguei a duas soluções interessantes: uma usando o ambiente listing (veja alguns exemplos aqui, é bem customizável), outra usando o pacote minted.

Uma das dificuldades de se usar o minted no Windows é a necessidade de criar um script (cmd, os antigos .bat) e instalar o Pygments (um script para Python que gera uma saída sintaticamente colorida) manualmente. Decidi tomar a tarefa de documentar a tentativa de configurar o minted.

Obs: O syntax highlighting mostrado aqui é o do plugin do WordPress (já configurado na versão wordpress.com). Para maiores informações, consulte o manual).

Antes, vejamos nosso toolbox

Primeiro, vamos nos colocar em sintonia. Estou levando em consideração o seguinte:

  1. Você tem uma versão de Python 2.x > 2.4  instalado e corretamente configurado no seu Windows (estou usando o Python 2.7.3).
  2. Você instalou o setup_tools correspondente à sua versão de Python 2.x (isso permitirá usar o easy_install)
  3. Você está usando o MikTex e o Texmaker (se não, instale primeiro o MikTex e depois o Texmaker. O meu MikTex está configurado com todos os pacotes – veja no site como atualizar seus pacotes).

Instalando e configurando o Pygments

Após ter o setup_tools instalado, abra uma janela de terminal e execute:
easy_install Pygments

Sua saída, caso tenha funcionado corretamente, deve ser similar a essa:

PS C:\Users\Bruno> easy_install Pygments
Searching for Pygments
Reading http://pypi.python.org/simple/Pygments/
Reading http://pygments.org/
Reading http://pygments.pocoo.org/
Best match: Pygments 1.5
Downloading http://pypi.python.org/packages/2.7/P/Pygments/Pygments-1.5-py2.7.egg#md5=8ea02c2eafb2580336b7637be629f7ce
Processing Pygments-1.5-py2.7.egg
creating c:\python27\lib\site-packages\Pygments-1.5-py2.7.egg
Extracting Pygments-1.5-py2.7.egg to c:\python27\lib\site-packages
Adding Pygments 1.5 to easy-install.pth file
Installing pygmentize-script.py script to C:\Python27\Scripts
Installing pygmentize.exe script to C:\Python27\Scripts
Installing pygmentize.exe.manifest script to C:\Python27\Scripts

Installed c:\python27\lib\site-packages\pygments-1.5-py2.7.egg
Processing dependencies for Pygments
Finished processing dependencies for Pygments

Criando o script do Pygments

Na documentação do minted, vemos que é necessário adicionar à variável de ambiente Path o caminho para onde o script do Pygments foi instalado e configurar um script cmd no mesmo diretório para que seja chamado corretamente. No meu caso, a instalação do Python foi no diretório C:\Python27 e a instalação do Pygments foi no diretório C:\Python27\Scripts, então adiciono esse último ao path.

No mesmo diretório, é necessário criar um script pygmentize.cmd para que seja corretamente chamado pelo minted. Para isso, basta criar um .txt com o seguinte código e alterar sua extensão para .cmd. Atente para a variável PYTHONPATH que é criada com o caminho para o diretório onde o Python foi instalado.

@echo off
set PYTHONPATH=C:\Python27
%PYTHONPATH%\python.exe %PYTHONPATH%\Scripts\pygmentize %*

Testando com um documento LaTeX no Texmaker

Para o script pygmentize ser chamado pelo minted devemos configurar os processadores TeX para realizar chamadas a programas externos. Para isso, tanto para o latex quando para o pdftex, devemos incluir na chamada o seguinte parâmetro: -shell-escape.

No Texmaker, vá no menu Options, Configure Texmaker. Nos processadores latex e pdftex, adicione o parâmetro antes de %.tex. Use as listagens a seguir para testar. Não se esqueça de incluir o pacote minted no preambulo!

Minimalista:

\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{c++}
#include <iostream>
int main() {
   std::cout << "Hello world" << std::endl;
   return 0;
}
\end{minted}
\end{document}

Um exemplo mais elaborado:

\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[portuguese]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{minted}
\title{Testing minted}
\author{killerasus}

\begin{document}
\maketitle
\listoflistings
\section{Listing test}
	\begin{listing}[H]
		\begin{minted}[mathescape,
        	       linenos,
            	   numbersep=5pt,
              	 gobble=2,
               	frame=lines,
               	framesep=2mm]{csharp}
  		string title = "This is a Unicode \pi in the sky"
  		/*
 		 Defined as $\pi=\lim_{n\to\infty}\frac{P_n}{d}$ where $P$ is the perimeter
  		of an $n$-sided regular polygon circumscribing a
  		circle of diameter $d$.
  		*/
  		const double pi = 3.1415926535
	\end{minted}
  \label{lst:csharp}
  \caption{C\# listing}
\end{listing}
	This is a listing example. Refer to listing \ref{lst:csharp} for more information.
\end{document}
Anúncios
Categorias:latex, tutorial
  1. maio 21, 2013 às 13:32

    Oi Bruno,
    Muito bom seu post. Segui ele e consegui instalar o minted.
    Obrigado pela ajuda,

  1. No trackbacks yet.

E o seu comentário?

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: