有人能给我一份详细的入门指南吗\mathchoice
?我试图定义下标和上标的命令(我发现它们存在,被称为 \underset 和 \overset),到目前为止,我一直在使用缩放数组(矩阵)来实现这一点,即压缩包含文本行和上标/下标内容的列向量,以避免矩阵膨胀并在其自身和周围环境之间留下空间,并将其内容重新缩放为正常大小或上标/下标的较小尺寸。
问题是,一旦此列向量的“单元格”高度发生变化,我的文本就会开始飞到其余文本上方或沉入其下方。因此,我必须处理缩放比例,而找到完全正确的缩放因子以使文本与附近的文本对齐,这通常很无聊。在处理这个问题时,我尝试定义一个命令\lower
,但遇到了Command \lower already defined
错误。我查找了\lower
一下,发现了一个叫做 \mathchoice 的东西。问题是,我发现的似乎只是故障排除,并且需要对是什么有最低限度的了解\mathchoice
,或者至少对某些代码行(如\def\xfb#1#2{\fbox{$#1#2$}}
)的作用有最低限度的了解,而我没有;或者也许我发现了什么(即\mathchoice 的正确使用) 仅旨在提供实用建议,即为您提供可用的代码,而不是解释如何使用推荐的代码。
为了举一个与无关的例子\mathchoice
,我的意思是我发现似乎要么要求读者知道\newcommand{\norm}[1]{\left\|#1\right\|}
正在定义一个新命令,该命令由调用\norm
,有一个参数,并将其放在\left\|
和之间\right\|
,它们是自动调整大小的双竖线,要么只给读者代码而没有任何解释它的意图。\mathpalette
似乎与密切相关\mathchoice
,所以我认为就两者寻求帮助并不合适。
答案1
\mathchoice
旨在解决定义数学模式命令的问题,这些命令在四种主要数学样式中表现不同,即,展示,文本,脚本和腳本腳本。我将略过四种次要(或“局促”)风格,因为它们与 无关\mathchoice
。
TeX 在显示时使用显示样式;在内联公式中则使用文本样式。但下标或上标在第一级使用脚本样式,从第二级开始使用脚本样式。
但是,当以显示样式排版分数时,TeX 会使用文本样式作为分子和分母。但是当分数以文本样式开始时,它将使用脚本样式。
让我们举个例子。在amsmath
中,\iint
排版了一个二重积分;它由排版两个积分符号构成,但它们必须比 的结果更接近\int\int
。但是,显示样式中的备份量必须比其他样式中的备份量更大,因此amsmath
使用
\mkern-7mu\mathchoice{\mkern-2mu}{}{}{}
这意味着在显示样式中备份将是-9mu,但在其他样式中仅为-7mu。
另一个重要的例子是\text@
,它是amsmath
内部的\text
:
\def\text@#1{{\mathchoice
{\textdef@\displaystyle\f@size{#1}}%
{\textdef@\textstyle\f@size{\firstchoice@false #1}}%
{\textdef@\textstyle\sf@size{\firstchoice@false #1}}%
{\textdef@\textstyle \ssf@size{\firstchoice@false #1}}%
\check@mathfonts
}%
}
除了一些小细节,这通过使用不同的字体排版四个框来实现目的:\f@size
是当前字体大小的 LaTeX 内部框,\sf@size
是\ssf@size
对应于第一和第二级下标/上标的字体大小的内部框。当 TeX 最终决定要排版包含的子公式的样式时\text
,它将使用四个框中的一个。
这些盒子是前TeX 不知道该使用哪一个,因为 TeX 的设计中可能存在最大的缺陷,即它如何管理分数。但描述这一点就太过分了。
原语\mathchoice
有四个参数,应该是数学材料;它们以相应的样式排版并存储起来:
\mathchoice{<material for display style>}
{<material for text style>}
{<material for script style>}
{<material for scriptscript style>}
(在定义中\text@
我们看到\textdef@
调用\hbox
切换回文本模式)。
最常用的\mathchoice
是通过\mathpalette
,你可以在\mathpalette 的奥秘
答案2
这个问题(以及许多其他问题)的最佳答案是TeX 按主题分类作者:Victor Eijkhout。texdoc texbytopic
免费试用这本好书。
无论如何,它告诉您 TeX 中有八种数学模式:
数学公式有八种样式可供选择:D 显示样式、T 文本样式、S 脚本样式、SS 脚本样式以及这四种“紧凑”样式 D'、T'、S'、SS'。紧凑样式的主要区别在于上标没有像原始样式那样凸起。
并进一步。
原始命令
\mathchoice{D}{T}{S}{SS}
让用户为四种样式指定公式的四种变体。TEX 会构造所有四种变体并插入适当的变体。