![从 lstinputlisting 引用 latex 中的方程式](https://linux22.com/image/348281/%E4%BB%8E%20lstinputlisting%20%E5%BC%95%E7%94%A8%20latex%20%E4%B8%AD%E7%9A%84%E6%96%B9%E7%A8%8B%E5%BC%8F.png)
- 我想将外部文件中的代码放入 LaTeX 文档中。
- 该代码能够独立运行。
- 该代码的注释中引用了文档中的方程标签。
- 我希望在最终文档中看到这些方程式的更新和引用,并带有标题、标签、框、编号行等。
带有标记方程式的乳胶文档示例:
%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}
文档中要包含的示例代码:
#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)
但是,使用 \lstinputlisting 会产生错误。我该如何引用这样的方程式?
非常感谢。
答案1
escapeinside
使用单个字符作为分隔符!
\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}