我正在寻找一种使用\big
及其朋友的方法,使它们适应所处的环境,例如\scriptstyle
。在某种程度上,这已经涵盖了在这个问题中以及相应的回答,但结果并不如我所愿。
\documentclass{article}
\usepackage[english]{babel}
\usepackage{amsmath}
\newcommand{\tbo}{\tilde{b}+1}
\begin{document}
\[ \left(\tbo\right)^{\left(\tbo\right)^{\left(\tbo\right)}} \]
\vspace{-0.5cm}
\[ \bigl(\tbo\bigr)^{\bigl(\tbo\bigr)^{\bigl(\tbo\bigr)}} \]
% Bruno Le Floch's modification (see answer linked above)
\makeatletter
\let\bBigg@@\bBigg@
\renewcommand{\bBigg@}[2]{{%
\mathchoice
{\bBigg@@{#1}{#2}}%
{\bBigg@@{#1}{#2}}%
{\big@size=.7\big@size\bBigg@@{#1}{#2}}%
{\big@size=.5\big@size\bBigg@@{#1}{#2}}}}%
\makeatother
\vspace{-0.5cm}
\[ \bigl(\tbo\bigr)^{\bigl(\tbo\bigr)^{\bigl(\tbo\bigr)}} \]
\end{document}
修改后尺寸略有改善,但改善不大(尤其是在 中\scriptscriptstyle
)。此外,小样式中的水平间距对我来说有点宽。我尝试对因素进行了一些调整0.7
,0.5
但这并没有改变任何东西(肉眼看来)。
我不知道这个要求是否过分,但我希望\big
上标的行为也能尽可能地模仿普通文本的行为。
在理想情况下,解决方案还会考虑到 David Carlisle 对上述链接答案的评论,即防止缩放比例对于较小的字体尺寸来说太小。但是,我不知道如何读取 NFSS 数据,也不知道是否可以动态地做到这一点……
答案1
这里有一个替代方案:包\scaleleftright
的宏。它将把第一个和第三个参数缩放到第二个参数的垂直范围(没有以数学轴为中心的scalerel
要求)。\left
\right
为了回应对 tohecz 的批评和 OP 的质询,可以通过添加符合字体大小并遵循数学轴的“支柱”来补偿不平衡的数学轴。在这里,我展示了一个结果来说明 tohecz 的观点,首先没有这样的支柱,然后有支柱。支柱是\vphantom
当前数学大小的左括号,缩放到 130% 大小(如果需要括起来的是更大/更小的垂直范围,可以更改该大小)。括号关于数学轴对称,因此是。当前数学样式中的括号的大小通过使用的构造\mstrut
导入到。\scalebox
\ThisStyle{...\SavedStyle...}
scalerel
\documentclass{article}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{scalerel}
\newcommand{\tbo}{\tilde{b}+1}
\begin{document}
\[ \scaleleftright{(}{\tbo}{)}^{{\scaleleftright{(}{a_j - 1}{)}}%
^{\scaleleftright{(}{\tbo}{)}}}
\]
\renewcommand{\tbo}{\tilde{b}+1\mstrut}
\newcommand\mstrut{\ThisStyle{\vphantom{\scalebox{1.3}{$\SavedStyle($}}}}
\[ \scaleleftright{(}{\tbo}{)}^{{\scaleleftright{(}{a_j - 1\mstrut}{)}}%
^{\scaleleftright{(}{\tbo}{)}}}
\]
\end{document}