![.Nag 抱怨 footnotesize 环境。为什么?](https://linux22.com/image/343035/.Nag%20%E6%8A%B1%E6%80%A8%20footnotesize%20%E7%8E%AF%E5%A2%83%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我在我的文档中使用:
\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 及其变体进行类似且更为详细的讨论。