.png)
Quero incluir o código de um arquivo em meu documento. No entanto, vários intervalos de linhas distintos devem aparecer na mesma listagem. Além disso, quero usar devoração e seria bom incluir algumas linhas em branco.
Se eu usar o listings
pacote, posso usar a opção linerange
de incluir vários intervalos de linhas do mesmo arquivo. No entanto, devorar não é suportado para entradas de arquivo e parece que linhas vazias únicas são ignoradas de alguma forma na saída (linha 5 nos exemplos abaixo).
Se eu usar minted
, posso devorar e incluir linhas vazias. No entanto, só posso usar um intervalo de linhas por \inputminted
comando. Isso seria bom (porque eu uso diferentes distâncias de devoração para diferentes intervalos de linha), mas há uma lacuna desagradável entre os diferentes intervalos. Posso usar vspace
para fazê-lo desaparecer, mas nem sempre funciona (por exemplo, se a página for esticada por algum motivo). Seria bom ter algo assim, que reconhecesse que essas partes do arquivo deveriam ser mostradas como contínuas:
\begin{minted}
\pythonfile[firstline=5,lastline=7]{mymodule.py}
\pythonfile[firstline=16,lastline=17,firstnumber=last]{mymodule.py}
\pythonfile[gobble=4,firstline=22,lastline=23,firstnumber=last]{mymodule.py}
\end{minted}
Aqui está meu exemplo mínimo de trabalho:
\documentclass{article}
\usepackage{filecontents}
\usepackage{listings}
\usepackage{minted}
\begin{filecontents}{mymodule.py}
import numpy as np
def mymean(x, axis=0) :
''' Here I explain why I need my own mean function.
Suppose for instance that I want to use axis=0 as a default.
Keyword arguments:
axis -- the axis over which to compute the mean.
Return:
The mean.
'''
return np.mean(x, axis=axis)
def mystd(x) :
return np.std(x)
if __name__ == '__main__' :
x = np.random.randint(0,100,150)
print mymean(x)
print mystd(x)
\end{filecontents}
\newmintedfile{python}{frame=leftline,linenos}
\begin{document}
\section{Listings}
\lstinputlisting[frame=left,numbers=left,language=Python,linerange={5- 7,16-17,22-23}]{mymodule.py}
\section{Minted}
\pythonfile[firstline=5,lastline=7]{mymodule.py}
\pythonfile[firstline=16,lastline=17,firstnumber=last]{mymodule.py}
\pythonfile[gobble=4,firstline=22,lastline=23,firstnumber=last]{mymodule.py}
\end{document}