根据https://en.wikibooks.org/wiki/LaTeX/Basics#Spaces
...开放空间是一般来说忽略。
chktex
我使用一个程序来警告可能的印刷错误或逻辑错误,而乳胶本身并没有发出警告,这时我遇到了这个问题。
例如,如果在或前面发现空格/制表符,chktex
则会发出警告(\label
\index
警告 24: Delete this space to maintain correct pagereferences.
)。
发出此警告的原因是标签应始终位于与标签相关的同一页面上(参见$ texdoc chktex
,第 7 章,第 19 页,v1.7.4)。
不过,我通常会在图形环境中缩进行:
\begin{figure}
\centering
\includegraphics{}
\caption{}
\label{}
\end{figure}
因此,chktex 对 的缩进表示不满\label{}
。
在这个特殊的情况下,作为一个浮动框,浮动框内的所有内容,据我所知,无论如何都在同一页面上(可能类似于\begin{equation}...\n\label{eq:first}\end{equation}
)。
问题:我想知道前面的空格是否\label
会导致错误的页面引用?考虑图形环境中的缩进,例如这种情况:
\paragraph{Introduction}%
text of paragraph...%
\label{par:end_intro}%can this be on a new page
因此,扩展 chktex 以区分“开头空格”和第一个非空格字符后的空格以消除误报(如我的情况中的图形环境中的缩进)是否合理?或者换句话说,我的情况中的警告是误报吗?
如果有人知道与此相关的更好的情况,我会很高兴如果你能将其插入到问题中。
更新chktex 版本 1.7.5(2015-12-07)及更高版本跟踪上一行是否以注释结尾,并且不会在上面给出的示例中引发警告 24。
答案1
检查程序显然过于谨慎(即错误),认为分页符总是可以在之前的空格处发生\label
。
但是您提供的形式并不是最佳的,但原因不同:如果您将其放在\label
标题后面(无论是否在其前留有空格或换行符),垂直空间都会受到不利影响。
考虑
\documentclass{article}
\setlength\belowcaptionskip{10pt}
\begin{document}
\begin{figure}[h]
\caption{ay\label{a}}%
\begin{center}
x
\end{center}
\end{figure}
\begin{figure}[h]
\caption{ay}\label{b}
\begin{center}
x
\end{center}
\end{figure}
\end{document}
第一种形式中,标题和居中文本之间的空间明显较小,因为节点空间center
与标题已添加的空间合并。然而,在第二种形式中,\write
节点空间\label
阻止center
环境检测已添加的垂直空间,因此它会添加其全部空间。
(请注意,这里发布的第一个示例完全是错误的,如另一个答案中所述。上述示例是在原始发布之后添加的。)
答案2
如果没有激活空格的特殊设置(本质上,我们不是处于逐字模式),则行首的空格将被忽略。chktex
在这种情况下,如果有抱怨,那也是毫无意义的。
实际上,程序在警告\label
或之前的空格时通常是错误的\index
,因为它们的定义以 开头\@bsphack
,其职责是检查水平粘连是否在它之前,在这种情况下,记住它并抑制它;下一个\@esphack
命令将插入记住的空格(在标签或索引条目之后)并忽略后续空格。
以下是一个例子
\documentclass{article}
\begin{document}
Here is an example of a ``misplaced label'' \label{mispl} according
to \texttt{chktex}.
Here is an example of a ``misplaced label'' according
to \texttt{chktex}.
\end{document}
输出为chktex
ChkTeX v1.7.4 - Copyright 1995-96 Jens T. Berger Thielemann.
Compiled with POSIX extended regex support.
Warning 24 in splab.tex line 5: Delete this space to maintain correct pagereferences.
Here is an example of a ``misplaced label'' \label{mispl} according
^
No errors printed; One warning printed; No user suppressed warnings; No line suppressed warnings.
See the manual for how to suppress some or all of these warnings/errors.
但很明显排版是正确的:
请注意,您的示例可以简化:不需要%
。
\begin{figure}
\centering
\includegraphics{file}
\caption{Caption text}
\label{whatever}
\end{figure}
这是因为 以\caption
开头和结尾\par
,所以\label
以垂直模式处理。 之后的行尾\includegraphics
将被 抑制\par
,\label
以垂直模式处理,其中空格不起作用。
我个人的偏好是
\begin{figure}
\centering
\includegraphics{file}
\caption{Caption text}
\label{whatever}
\end{figure}
我通常更喜欢使用空行而不是缩进,这样可以更清楚地区分输入的各个部分。不过这只是我的风格。