我有一份文档,它创建了一个新的示例列表。该列表有一个标签\label{sec:examples}
,用于标记列表的标题,该标题呈现为一个部分。但是,交叉引用sec:examples
会导致对子部分的引用。
这是一个很小但完整的例子,演示了这个问题:
\documentclass[conference]{IEEEtran}
\usepackage{lipsum}
\usepackage[titles]{tocloft}
\newcommand{\listexampletitle}{\addtocounter{section}{1}\thesection.~List of Examples\label{sec:examples}}
\newlistof[section]{examples}{exp}{\listexampletitle}
\newcommand{\examplelist}[1]{%
\refstepcounter{examples}
\addcontentsline{exp}{examples}
{\protect\numberline{\theexamples}#1}
}
\newcommand{\example}[1]{\examplelist{#1}\textbf{Example \theexamples}: #1}
\cftsetindents{examples}{1.5em}{3.0em}
\cftpagenumbersoff{examples}
\setlength{\cftexamplesnumwidth}{1.5cm}
\begin{document}
\title{Example IEEE with tocleft}
\author{}
\maketitle
\section{Introduction}
Examples are summarised in Section \ref{sec:examples}.
\example{A first example}
\section{A section}
\subsection{A subsection}
\lipsum[1]{}
\example{A second example}
\listofexamples
\end{document}
下面是相关输出的图片,有问题的行以黄色突出显示。简介的第一行,呈现为:
Examples are summarised in Section II.I.
应该读:
Examples are summarised in Section III.
我该如何纠正这个问题?
输出:
答案1
不知何故,该\newlistof
命令似乎将命令分组(诚然,我没有检查这一点)\refstepcounter
。最好先修补\listofexamples
,首先增加节计数器,而不是立即通过减少它来更正它。这是通过etoolbox
包命令实现的\pretocmd
,在这种情况下有点偷懒,我忽略了测试;-)
\listofexamples
我稍微改变了等等的定义,使它成为一个真正的部分。
\documentclass[conference]{IEEEtran}
\usepackage{lipsum}
\usepackage[titles]{tocloft}
\usepackage{etoolbox}
\newcommand{\listexampletitle}{List of Examples}
\newlistof[section]{examples}{exp}{\section{\listexampletitle}}%
% Prepending the \listofexamples command with dummy \refstepcounter{section} etc.
\pretocmd{\listofexamples}{\refstepcounter{section}\addtocounter{section}{-1}}{}{}%
\newcommand{\examplelist}[1]{%
\refstepcounter{examples}%
\addcontentsline{exp}{examples}%
{\protect\numberline{\theexamples}#1}
}%
\newcommand{\example}[1]{\examplelist{#1}\textbf{Example \theexamples}: #1}
\cftsetindents{examples}{1.5em}{3.0em}%
\cftpagenumbersoff{examples}
\setlength{\cftexamplesnumwidth}{1.5cm}
\begin{document}
\title{Example IEEE with tocleft}
\author{}
\maketitle
\section{Introduction}
Examples are summarised in Section \ref{sec:examples}.
\example{A first example}
\section{A section}
\subsection{A subsection}
\lipsum[1]{}
\example{A second example}
\listofexamples\label{sec:examples}
\end{document}