通常 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}