使用以下 MWE 您将收到警告
Label lst:HalloWelt multiply defined.
在 MWE 中,我添加了对包的调用showlabels
,refcheck
以显示已使用的标签并检查未使用的标签。请取消注释。
我看到软件包showexpl
(版本 2012/09/22 v0.3j)引发了此警告。我该如何消除此警告?
梅威瑟:
\listfiles
\RequirePackage{filecontents}
\begin{filecontents*}{HalloWelt.ltx}
\documentclass{scrartcl}
\begin{document}
Hallo Welt!
\end{document}
\end{filecontents*}
\documentclass{scrartcl}
%\usepackage{showlabels} % To check the used label
%\usepackage{refcheck} % to check unused labels
\usepackage{varioref} % difference with ref automaismn?
\usepackage{listings}
\lstloadlanguages{[LaTeX]TeX}
\usepackage[rframe=single]{showexpl}
\begin{document}
%\section{Test1}\section{Test2} % no change of warning
%\subsection{subtest1}\subsection{subtest2} % with or with not sections
The following macro throws the warning:
LaTeX Warning: Label lst:HalloWelt multiply defined.
\LTXinputExample[%
caption={Datei \texttt{HalloWelt.ltx}}
,label={lst:HalloWelt}
]{HalloWelt.ltx}
How to get rid of that warning?
This is a reference to listing~\ref{lst:HalloWelt}
and with varioref~\vref{lst:HalloWelt}.
\end{document}
答案1
在寻找警告的原因时,这也会导致特殊原因的参考编号错误(例如清单 2.3 而不是清单 2.1)我找到了一些旧版本showexpl
,尝试了它们并得到以下结果:
- 使用版本 0.3j(当前版本)时,会出现警告
- 对于 0.3i 版本,警告消失。
两个版本的区别在于,第 230-231 行
\let\SX@MakeCaption\lst@MakeCaption
\let\lst@MakeCaption\@gobble
和第 242 行
\let\lst@MakeCaption\SX@MakeCaption
(来自 0.3i 版本的行号)在 0.3j 版本中被删除。
我不知道维护者为什么删除了这几行。如果您使用 0.3i 版本或将删除的行复制到 0.3j 版本,则引用编号是正确的,警告也会消失。
编辑:
作者向showexpl
我发送了该软件包的修正版本,并且一切都与我的文档配合良好。它将很快上传到 CTAN...