重申清单

重申清单

我有一个清单,我想在稍后重新陈述。我该如何做,而不为重新陈述的清单创建新的索引?

到目前为止,我最好的方法是将列表放两次,这样会为第二次出现创建一个新索引。如果两个重复列表的标签没有改变,这还会导致命名冲突。

\documentclass{article}
\usepackage{listings}
\begin{document}
\section{One}
\begin{lstlisting}[caption=Code,label=lst:code]
    x:=1;
\end{lstlisting}
Here, we introduce Listing~\ref{lst:code}.
\section{Two}
For convenience, we restate Listing~\ref{lst:code} here.
\begin{lstlisting}[caption=Code,label=lst:code]
    x:=1;
\end{lstlisting}
\end{document}

图片

我该如何避免这种情况?

理想情况下,我希望重述列表而不必明确重复其内容(例如,对于使用 的引理,这是可能的thm-restate)。本质上,我希望获得与这个问题,但用于列表。

答案1

一种选择是将列表的内容外部化为插入的额外文件,\lstinputlisting并从第一个实例中设置的标签构建第二个实例的标题:

\documentclass{article}
\usepackage{listings,hyperref,filecontents}
\begin{document}

% only for MWE purposes (to create a file we can load with \lstinputlisting)
\begin{filecontents*}{mycode.pas}
  x:=1;
\end{filecontents*}


\section{One}
\lstinputlisting[caption=Code,label=lst:code]{mycode.pas}
Here, we introduce Listing~\ref{lst:code}.

\section{Two}
For convenience, we restate Listing~\ref{lst:code} here.
\lstinputlisting[title=\lstlistingname~\ref{lst:code}: \nameref{lst:code}]{mycode.pas}
\end{document}

在此处输入图片描述

相关内容