.png)
Ich möchte Code aus einer Datei in mein Dokument einfügen. Allerdings sollten mehrere unterschiedliche Zeilenbereiche in derselben Auflistung erscheinen. Außerdem möchte ich Gobbling verwenden und es wäre schön, einige Leerzeilen einzufügen.
Wenn ich das listings
Paket verwende, kann ich die Option nutzen linerange
, mehrere Zeilenbereiche aus derselben Datei einzuschließen. Allerdings wird Gobbling für Dateieingaben nicht unterstützt, und es scheint, dass einzelne leere Zeilen in der Ausgabe irgendwie übersprungen werden (Zeile 5 in den Beispielen unten).
Wenn ich verwende minted
, kann ich leere Zeilen verschlingen und einschließen. Allerdings kann ich nur einen Zeilenbereich pro \inputminted
Befehl verwenden. Das wäre in Ordnung (weil ich für verschiedene Zeilenbereiche unterschiedliche Verschlingungsabstände verwende), aber es gibt diese unangenehme Lücke zwischen den verschiedenen Bereichen. Ich kann vspace
sie mit verschwinden lassen, aber das funktioniert nicht immer (z. B. wenn die Seite aus irgendeinem Grund gestreckt ist). Es wäre schön, so etwas zu haben, das erkennt, dass diese Dateiteile als zusammenhängend angezeigt werden sollen:
\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}
Hier ist mein minimales Arbeitsbeispiel:
\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}