当我使用定义两个新级别时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]