包 showexpl 抛出“标签......多重定义”

包 showexpl 抛出“标签......多重定义”

使用以下 MWE 您将收到警告

Label lst:HalloWelt multiply defined. 

在 MWE 中,我添加了对包的调用showlabelsrefcheck以显示已使用的标签并检查未使用的标签。请取消注释。

我看到软件包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...

相关内容