从 lstinputlisting 引用 latex 中的方程式

从 lstinputlisting 引用 latex 中的方程式
  • 我想将外部文件中的代码放入 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}

相关内容