答案1
我想要一些能够根据给定公式自动找到正确括号大小的包。
我担心你最好开始寻找圣杯 :-) 说真的:当 Knuth 创建 TeX 时,他无法想出一个例程,可以针对每个可以想到的公式自动确定“正确”的分隔符大小——过去 40 多年里也没有其他人能做到。从内心深处,我怀疑这是因为精美的排版既是一门艺术,也是一门手艺。只要有足够的时间和资源,手艺最终可能会(在很大程度上)实现自动化。相比之下,我怀疑艺术可以曾经自动化,可能是因为艺术涉及个人情感,而这种情感对每个人来说都是高度具体的。一件对某些人“说话”的艺术品可能会让其他人完全冷漠,对吧?
这数学工具包提供了一个名为的宏\DeclarePairedDelimiter
,它大大简化了创建宏的过程,将某种形状和大小的分隔符放置在宏参数的左侧和右侧。例如。
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
创建两个宏:\norm*
,它自动调整分隔符的大小,\norm
,它使用可选参数来设置分隔符所需的大小。例如,\norm[\big]{...}
将双竖线设置为其\big
大小。
虽然我怀疑(希望?!)我们大多数人都愿意同意这样的说法,即自动调整大小的分隔符对于诸如这样的简单公式来说太大\hat{f}
,但我也怀疑,对于或是否\norm{\hat{f}}
产生\norm[\big]{\hat{f}}
更好的结果,不太可能达成这样的共识。
重要的是,决定还可能取决于标准项中是否存在“下标”项。就我个人而言(还有谁?!),我很可能相信 在\norm[\big]{\hat{f}}
某种程度上“看起来更好”(实际上只是“稍微好一点”)比\norm{\hat{f}}
更好(见第二行)。但我也可能相信\norm{\hat{f}}^{}_{L^1(\mathbf{R}^d)}
比 更好\norm[\big]{\hat{f}}_{L^1(\mathbf{R}^d)}
,可能是因为前一个表达式努力手动调整(见^{}
粒子)下标位置项的垂直位置(此处:L^1(\mathbf{R}^d)
)。最后,对于整体美感而言,下标的“正确”定位可能比垂直分隔符的大小更重要。
\documentclass{article} % or some other suitable document class
\usepackage{mathtools} % for '\DeclarePairedDelimiter' macro
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
\begin{document}
$-\left\Vert \hat{f} \right\Vert_{L^1(\mathbf{R}^d)} % automatic sizing
\
\norm*{\hat{f}}_{L^1(\mathbf{R}^d)}
\
\norm{\hat{f}}_{L^1(\mathbf{R}^d)}
\
\norm[\big]{\hat{f}}_{L^1(\mathbf{R}^d)}
\
\norm{\hat{f}}^{}_{L^1(\mathbf{R}^d)}-$
\bigskip
$-\left\Vert \hat{f} \right\Vert % automatic sizing
\
\norm*{\hat{f}}
\
\norm{\hat{f}}
\
\norm[\big]{\hat{f}}-$
\end{document}
答案2
最后,我通过编写一个 (Julia) 脚本解决了我的问题,该脚本遍历键入的 tex 代码并以预定义的样式替换括号。当然,这是一个额外的步骤,在运行脚本之前,在渲染的 pdf 中看不到正确大小的括号,但除此之外,它运行良好。