我有一个关于编写方程式的最佳实践的一般性问题。
当括号不是必需的时,我通常不关心它们,例如{x}_{i}
和x_i
。但是,我注意到它们的使用会改变字符之间的间距。例如,的输出P\left(x\right)
与的输出不同P{\left(x\right)}
,因为前者在 P 和 (x) 之间添加了一个空格,而后者没有。
一般来说,从所见即所得观点?它们如何影响间距?它们应该如何用来将某物与其他东西联系起来,例如将函数 P 与其参数 (x) 联系起来?它们是否可以安全地省略,{x}_{i}
还是应该始终出于某些技术/语义/印刷/哲学原因使用它们?
另外,大括号是否应与圆括号结合使用?例如,应使用下列哪个来得到 (a+b)(c+d)?
\begin{align}
\left(a+b\right) \left(c+d\right) \\
\left({a+b}\right) \left({c+d}\right) \\
{\left(a+b\right)} {\left(c+d\right)}
\end{align}
我一直没能找到任何东西,因为所有针对大括号的搜索结果都指的是\lbrace \rbrace
而不是{ }
。
附加问题:我写道\frac{1}{n^2} n
,我注意到在1/n²和n,而在格式正确的方程中应该有。如何添加更多空间,是否应该在某些地方使用括号?我不是问是否存在 \addMoreSpaceHere 命令,而是问括号的使用是否会影响间距以及如何,例如\frac{1}{n^2} n
和{\frac{1}{n^2}} {n}
谢谢你!
答案1
你问,
一般来说,从所见即所得 (WYSIWYM) 的角度来看,使用 [花括号] 有没有什么好的做法?
是的:除非必要,否则不要使用花括号。
它们如何影响间距?
将数学对象(“原子”)括在花括号中,最基本的结果是将其状态更改为mathord
(“普通数学”)。TeX 不会在 类型的对象之间插入额外空格mathord
。相反,TeX(通常)会在 类型的对象mathbin
(“数学二元运算符”;例如,+
,-
和\times
),mathrel
(“数学关系运算符”;例如,=
,>
和<
),mathop
(“数学运算符”;例如,\sin
,\log
和\det
)周围插入空格。请考虑以下三个示例 - 在所有情况下,将运算符括在花括号中都是错误的。
对象的数学类型不仅会影响空格的数量(水平偏移) 插入到其之前和/或之后;它还会影响下标和上标的位置 (垂直偏移)。例如,)
和默认为]
类型math-close
。括号和方括号后面的任何下标和上标的位置将根据)
和是否]
包含在花括号中而有很大差异。并且,对于积分符号,过度使用花括号将(负面!)影响积分下限的位置。
不过,偶尔将某些数学原子的数学类型改为 也是明智的math-ord
。例如,如果您需要使用逗号 ( ,
) 而不是句号 ( .
,在英语世界的某些地区也称为“句号”...) 作为小数点来排版十进制数,那么您绝对应该写$3{,}14159$
而不是$3,14159$
,因为您需要覆盖math-punct
逗号的(“数学标点符号”)状态。
和往常一样,如果你知道自己在做什么,那么使用比绝对必要多一些的花括号(可能……)是没问题的。相反,如果你一直怀疑自己不知道多使用一对花括号是否是个好主意,那么你最好还是不是使用花括号...
答案2
至于\left( \right)
间距问题,我读了有关包装mleftright
在 Mico 链接的帖子中,介绍了\mleft( \mright
固定间距的变体(它适用于 (x) [x] {x} |x| ||x|| 等等)。
如果您已经\left( \right)
在文档中使用,则可以重新定义这些命令:
\usepackage{mleftright}
\renewcommand{\left}{\mleft}
\renewcommand{\right}{\mright}
& P\left( \frac{a}{b} \right) &
另一个简洁的解决方案\DeclarePairedDelimiter
来自包mathtools
:
\DeclarePairedDelimiter
\DeclarePairedDelimiter\parentheses{\lparen}{\rparen}
$ \parentheses{a} + \parentheses*{\frac{a}{b}} $
带星号的版本垂直拉伸括号,就像\left( \right)
这样。
两种解决方案都允许以正确的间距(即函数和参数之间没有空格)和正确的括号高度书写 f(a/b)。