![为什么有些命令使用 [],有些命令使用 {},有些命令两者兼用?](https://linux22.com/image/232945/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%9C%89%E4%BA%9B%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8%20%5B%5D%EF%BC%8C%E6%9C%89%E4%BA%9B%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8%20%7B%7D%EF%BC%8C%E6%9C%89%E4%BA%9B%E5%91%BD%E4%BB%A4%E4%B8%A4%E8%80%85%E5%85%BC%E7%94%A8%EF%BC%9F.png)
我发现很难记住哪些命令需要{}
参数,哪些命令需要[]
参数。这两者之间是否存在经验法则或语义差异?如果有,那是什么?(因为在我看来它们的作用相同。)
答案1
为了进一步阐述 Joel 的回答,我补充几点。Knuth 的纯 TeX 和 LaTeX 都使用{
和}
作为分组标记。然后使用它们来分隔强制参数,例如
\section{A section title}
然后 LaTeX 使用[
和]
来表示可选参数,例如
\section[Short title]{A section title}
这个想法是,有些信息并不总是需要的:如果简称与全称相同,就没有必要提供两次。
这种惯例并不是 TeX 的“硬编码”:可以改变所使用的方法。例如,ConTeXt 使用{
和}
作为将要排版的强制参数,并使用 进行分组,例如
\quotation{Damit ich dich besser {\em sehen} kann!}
另一方面,它使用[
和]
作为设置的参数,因此不会被排版
\setupbodyfontenvironment[default][em=italic]
答案2
通常{}
为必需参数,而[]
为可选参数。在学习定义命令时,可以阅读更多相关信息,例如这里。如果混淆,则可能是{}
。有些情况看起来特别奇怪吗?请注意,TikZ 确实不算数,因为它们的解析方式完全不同(尽管助记符相似)。