.Nag 抱怨 footnotesize 环境。为什么?

.Nag 抱怨 footnotesize 环境。为什么?

我在我的文档中使用:

\begin{footnotesize}
..
\end{footnotesize}

这确实给了我脚注大小的文本,但是 nag 抱怨道:

Package nag Warning: There is no environment ``footnotesize''.

为什么我会收到这个错误,如果这不是正确的方法,那么正确的方法是什么?

答案1

本质上,lint 检查器nag只能检查它们所知道的内容,它们并不是语言的完整规范。

在这种情况下,它不知道,根据设计,任何声明形式都可以用作环境,因此虽然仅使用\footnotesize可能更好并且肯定更常见,但环境形式也是正确的。

对于字体大小命令,通常最好只使用不带任何分组的命令并依赖外部环境

\begin{center}
\footnotesize
hello
\end{center}

此处,close 环境负责在尺寸变化的范围内结束段落。

如果你走的话

{\footnotesize hello}

然后,大小变化在段落之前结束,因此它是正常基线中的小文本,对于单词来说还可以,但如果有任何换行符,看起来就不好。您可以使用

{\footnotesize

}

但很容易忘记,环境形成

\begin{footnotesize}
hello

\end{foootnotesize}

这使得人们更容易忘记空白行。

但它仍然是正确的,如果你知道段落结尾不是问题,它可能会很有用,

\begin{footnotesize}
\begin{longtable}
.... thousand pages
\end{longtable}
\end{footnotesize}

可以使源代码更容易阅读,而不仅仅是}在表格后面有一个尾随,匹配的源文件后面有数千行{

答案2

使用此开关的“正确”方法是

{\footnotesize
...
}

\begin{foo}\end{foo}内部分别调用命令\foo\endfoo,并由本地分组包围。此外,还会额外检查由 启动的环境\begin{foo}是否由 正确关闭\end{foo}

因此,在您的示例中,扩展大致类似于

{\footnotesize
...
\endfootnotesize}

您的代码仍然有效的原因是命令\endfoo不需要定义。这里就是这种情况,没有\endfootnotesize,但\footnotesize仍在环境开始时被调用。因此,除了环境之外,\begin\end也适用于许多其他命令,即使它们不是通过 定义的\newenvironment

nag包修改了字体大小(和其他)命令的硬编码列表,以检查每次调用字体大小命令时当前的环境是什么。如果环境似乎与命令名称相同,则会发出警告,否则不会发生任何特殊情况。

另请参阅如何使用 \Large 及其变体进行类似且更为详细的讨论。

相关内容