我使用了LTXexample
定义的出色环境showexpl
来说明一些 LaTeX 基础知识。但是,以下代码使它感到困惑:引用仍然存在??无论我重新编译多少次......
\documentclass{article}
\usepackage{showexpl}
\begin{document}
\begin{LTXexample}[frame=none]
\begin{enumerate}
\item No need to manually number items here!
\item\label{second} Number two added automatically
\item Third item
\end{enumerate}
And here is a reference to item number \ref{second}
\end{LTXexample}
\end{document}
我已经在方程式环境中管理了内部引用LTXexample
,因此这是需要枚举的特定内容...有什么想法可以解决它吗?(我甚至不能作弊,只放“2”,因为代码与它并排显示......)
更新:我给作者发了邮件,showexpl
但还没收到回复。有谁想深入研究一下代码,看看是否能明显地解决这个问题?
答案1
这不是一个错误。这是故意的。showexpl 在 \SX@@preset 中设置了相当多的 \@gobble 命令。SX@1-label 来自 LTXexample 本身,而不是来自 \label{second}。您可以重新激活 \label:
\documentclass{article}
\usepackage{showexpl}
\begin{document}
\let\orilabel\label
\begin{LTXexample}[frame=none,preset=\let\label\orilabel]
\begin{enumerate}
\item No need to manually number items here!
\item\label{second} Number two added automatically
\item Third item
\end{enumerate}
And here is a reference to item number \ref{second}
\end{LTXexample}
\end{document}
答案2
在我看来,这似乎是某个地方的一个错误showxmpl
。如果你查看文件.aux
,你会看到预期的标签
\newlabel{SX@1}{{}{1}}
所以如果你破解.aux
阅读
\newlabel{second}{{2}{1}}
那么一切就会起作用,但是当然你必须在每次运行 LaTeX 时重新执行此操作。