lstinputlisting에서 라텍스의 방정식 참조

lstinputlisting에서 라텍스의 방정식 참조
  • 외부 파일의 코드를 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}

관련 정보