- Ich möchte Code aus einer externen Datei in ein LaTeX-Dokument einfügen.
- Dieser Code kann eigenständig ausgeführt werden.
- In den Kommentaren dieses Codes wird auf Gleichungsbeschriftungen aus dem Dokument verwiesen.
- Ich würde diese Gleichungen gerne im endgültigen Dokument aktualisiert und mit einer Überschrift, einem Etikett, in einem Kasten, nummerierten Zeilen usw. referenziert sehen.
Beispiel eines Latex-Dokuments mit einer beschrifteten Gleichung:
%doc.tex
\documentclass[]{article}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{listings}
\begin{document}
\begin{align}
\label{eq:my equation}
y = \sin(x) \cos(x)
\end{align}
\lstinputlisting[caption={Code},
frame=single,
numbers=left,
escapeinside={tex:}{:tex}
]{code.py}
\end{document}
Beispielcode, der in das Dokument aufgenommen werden soll:
#code.py
import math
def y(x):
return math.sin(x)*math.cos(x) #tex: Equation \ref{eq:my equation} :tex
print y(math.pi/4)
Die Verwendung von \lstinputlisting führt jedoch zu Fehlern. Wie kann ich auf solche Gleichungen verweisen?
Vielen Dank.
Antwort1
escapeinside
verwendet einzelne Zeichen als Trennzeichen!
\documentclass[]{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.py}
#code.py
import math
def y(x):
return math.sin(x)*math.cos(x) # % Equation \ref{eq:my equation} %
print y(math.pi/4)
\end{filecontents*}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{listings}
\begin{document}
\begin{align}
\label{eq:my equation}
y = \sin(x) \cos(x)
\end{align}
\lstinputlisting[caption={Code},
frame=single,
numbers=left,
escapeinside=\%\%
]{\jobname.py}
\end{document}