当我编译我的 LaTeX 文件时,我收到了这个警告信息。虽然我得到了 PDF 文件,但我仍然想知道为什么会出现这个警告以及如何修复它。
它出现在这一行。
\paragraph{Plane stress} Plane state of stress, a.k.a. plane stress, is a state of stress in which\[\sigma_{33}=\sigma_{31}=\sigma_{32}=0.\]
Warning: Difference (2) between bookmark levels is greater(hyperref) than one,
level fixed on input line 97. Difference (2) between bookmark levels
is greater(hyperref) than one, level fixed.
对于一些 TeX 专家来说,这个问题可能看起来很愚蠢,但作为新手,我真的不知道它是怎么来的。
我尝试编写两个子小节,但不对它们进行编号。因此我选择了命令\paragraph
。有什么解决方法吗?
答案1
当您跳过分段命令中的某个级别,同时仍请求维护等效的书签层次结构时,就会发生这种情况。以下 MWE 重现了该问题:
\documentclass{article}
\usepackage[bookmarksopen]{hyperref}% http://ctan.org/pkg/hyperref
\setcounter{tocdepth}{4}% Show up to level 4 (\paragraph) in ToC (and bookmarks)
\begin{document}
\section{A section}
\subsection{A subsection}
\subsubsection{A subsubsection}
\paragraph{A paragraph}
\subparagraph{A subparagraph}
\section{A section}
\subsection{A subsection}
%\subsubsection{A subsubsection}% Left out \subsubsection
\paragraph{A paragraph}
\subparagraph{A subparagraph}
\end{document}
请注意,第二个\paragraph
与前一个级别处于同一级别\subsubsection
。
为了避免此警告,请不要跳过部分层次结构的元素。而是重新定义它们以满足您的格式需求。具体到您的示例,使用\subsubsection*
(带星号的变体\subsubsection
)会使标题不编号 - 类似于\paragraph
。但是,还有其他方法(手动或通过类似titlesec
, 说)。
或者,加载bookmark
包裹覆盖此警告。
答案2
公认的答案非常好,但用不太实际、更哲学的术语来说,这个问题\paragraph
在 a\section
或内使用时很常见\subsection
。根本问题是想要一个主题段落并不真正依赖于章节结构,因此在没有小节的章节中有一个 是有意义的\paragraph
。相反,小节在语义上明确依赖于章节,因此它们大多不受此问题的影响。因此,用不必要的小节填充层次结构或将 提升\paragraph
为 a \subsubsection
(或更糟的是,提升为 a \subsection
)可能不是好的解决方案。接受目录将不一致地缩进是一种可能性,但不是解决方案。
@ilpssun 在对已接受答案的评论中提到了这一点,但我认为这值得更多关注:
可能最好只是\paragraph
从目录中排除 s。为此,\setcounter{tocdepth}{3}
在之前的某个地方\tableofcontents
将仅向目录中添加章节、部分、子部分和子子部分。\setcounter{tocdepth}{3}
将删除子子部分等。