什么时候 tex 文件中行的前导/打开空格很重要?

什么时候 tex 文件中行的前导/打开空格很重要?

根据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}

我通常更喜欢使用空行而不是缩进,这样可以更清楚地区分输入的各个部分。不过这只是我的风格。

相关内容