使用 titlesec 进行错误交叉引用

使用 titlesec 进行错误交叉引用

当我使用定义两个新级别时titlesec,该引用无法正常工作。

以下是一个例子:

\documentclass{article}

\usepackage{titlesec}

% First level
\titleclass{\exemple}{straight}[\subsection]
\newcounter{exemple}[section]
\titleformat{\exemple}[runin]{}{\theexemple}{0em}{Exemple \ }[\quad]
\titlespacing{\exemple}{0pt}{\baselineskip}{1em}

\renewcommand{\theexemple}{\thesection.\roman{exemple}}

% -------------------------------------------------------------------
% second one
\titleclass{\suiteexemple}{straight}[\subsection]
\newcounter{suiteexemple}[section]

\titleformat{\suiteexemple}[runin]{}{\thesuiteexemple}{0em}{Suite de l'exemple \ }[\quad]

\titlespacing{\suiteexemple}{0pt}{\baselineskip}{1em}
\renewcommand{\thesuiteexemple}{\thesection.\roman{suiteexemple}}
% -------------------------------------------------------------------


\begin{document}

\section{one} \label{sec:one}

...

\exemple{First exemple} 
\label{ex:one}

\exemple{Second example}

\section{two}

...

Reference to exemple : \ref{ex:one}

\end{document}

引用显示为“1”,但应该是“1.1”(不显示示例计数器)。

如果您注释掉引用之间的代码% ------就会正确显示。

您知道解决这个问题的方法吗?

答案1

问题在于如何\titleclass运作。

您在和\titleclass{\exemple}{straight}[\subsection]之间插入了一个新的编号级别。因此变为级别 3 并转移到级别 4。\subsection\subsubsection\example\subsubsection

接下来\titleclass{\subexemple}{straight}[\subsection]您执行相同的操作,因此\subexemple变为 3 级并\exemple转移到 5 级。

因此,如果 的通常值为 3 secnumdepth\exemple则会失去其编号,并且\label{ex:one}命令将引用在 处发生的最后一个“refstepped”命令\section{one}

你最好用以下\suiteexemple方式来定义\example*

\titleclass{\suiteexemple}{straight}[\exemple]

相关内容