\subsection 中的 \refstepcounter 将 \ref 拆分为 \subsubsection

\subsection 中的 \refstepcounter 将 \ref 拆分为 \subsubsection

通常 a\ref给 a\subsubsection给予1.1.1(来自父母\subsection)。示例:

\documentclass{book}

\begin{document}

\chapter{chap}
\section{sec}
\subsection{sub}
\subsubsection{subsub}
label \label{subsub}

\section{sec2}
\ref{subsub}

\end{document}

在此处输入图片描述

但是,如果我添加并使用计数器,则指示换行符输出\ref{subsub}

\documentclass{book}
\newcounter{someCounter}

\begin{document}

\chapter{chap}
\label{chap}
\refstepcounter{someCounter} %ok

\section{sec}
\label{sec}
\refstepcounter{someCounter} %ok

\subsection{sub}
\label{sub}
\refstepcounter{someCounter} %this breaks \ref{subsub}

\subsubsection{subsub}
\label{subsub}
\refstepcounter{someCounter} %ok

\section{sec2}
\ref{chap} :: \ref{sec} :: \ref{sub} :: \ref{subsub}

\end{document}

输出(最后3应该是1.1.1

在此处输入图片描述

这种意外行为的原因是什么?如何避免?

答案1

这是预期的行为。\subsubsection{subsub}没有数字,因此无法引用。内部\refstepcounter{subsubsection}不被调用,因为计数器的默认设置secnumdepth排除了\subsubsection下节命令\paragraph\subparagraph获取数字。\label{subsub}因此\subsection在第一种情况下引用了 before,\refstepcounter{someCounter}在第二种情况下引用了 before。

未编号的章节可以通过名称和页码引用

该示例使用包nameref来引用名称,另一个包是titleref

\documentclass{book}
\newcounter{someCounter}
\usepackage{nameref}

\begin{document}

\chapter{chap}
\label{chap}
\refstepcounter{someCounter} %ok

\section{sec}
\label{sec}
\refstepcounter{someCounter} %ok

\subsection{sub}
\label{sub}
\refstepcounter{someCounter} %this breaks \ref{subsub}

\subsubsection{subsub}
\label{subsub}
\refstepcounter{someCounter} %ok

\section{sec2}
\ref{chap} :: \ref{sec} :: \ref{sub} ::
section ``\nameref{subsub}'' on page \pageref{subsub}

\end{document}

按名称和页码引用结果

子小节编号:

可以通过以下方式增加节编号深度\stepcounter{secnumdepth}或将其设置为,\setcounter{secnumdepth}{3}以对包括子节在内的节级别进行编号:

\documentclass{book}
\newcounter{someCounter}

\setcounter{secnumdepth}{3}

\begin{document}

\chapter{chap}
\label{chap}
\refstepcounter{someCounter} %ok

\section{sec}
\label{sec}
\refstepcounter{someCounter} %ok

\subsection{sub}
\label{sub}
\refstepcounter{someCounter} %this breaks \ref{subsub}

\subsubsection{subsub}
\label{subsub}
\refstepcounter{someCounter} %ok

\section{sec2}
\ref{chap} :: \ref{sec} :: \ref{sub} :: \ref{subsub}

\end{document}

带编号子节的结果

相关内容