如何使数学模式中的多个变量具有相同的宽度?

如何使数学模式中的多个变量具有相同的宽度?

我想使用字符作为变量名,并将它们的宽度调整为字符的最大宽度。这样,它们周围的括号就会很好地对齐,如下例所示。我不想拉伸字符,而是想通过在字符的左右两侧添加空格来匹配宽度。我知道,\hphantom{}但我在这里需要的是将一个字符的宽度“填充”为另一个字符的宽度。

例子:

\begin{aligned}
&\operatorname{I}[a; c] \\
&\operatorname{I}[w; a] \\
&\operatorname{I}[c; w]
\end{aligned}

输出:

未对齐的变量名

答案1

您可以使用eqparbox。在第一个示例中,对象在分配的空间中居中,在第二个示例中,对齐方式为左右对齐。

标签是任意的,您需要为每个应用程序使用不同的标签。

\documentclass{article}
\usepackage{amsmath}
\usepackage{eqparbox}

\newcommand{\q}[3][c]{%
  % #1 (optional) = alignment, default c
  % #2 = tag
  % #3 = object
  \eqmakebox[#2][#1]{$#3$}%
}

\begin{document}

\[
\begin{aligned}
&\operatorname{I}[\q{1}{a}; \q{2}{c}] \\
&\operatorname{I}[\q{1}{w}; \q{2}{a}] \\
&\operatorname{I}[\q{1}{c}; \q{2}{w}]
\end{aligned}
\]

\[
\begin{aligned}
&\operatorname{I}[\q[r]{1}{a}; \q[l]{2}{c}] \\
&\operatorname{I}[\q[r]{1}{w}; \q[l]{2}{a}] \\
&\operatorname{I}[\q[r]{1}{c}; \q[l]{2}{w}]
\end{aligned}
\]

\end{document}

在此处输入图片描述

答案2

只要你不需要在各行上使用单独的方程编号,你就可以使用 TABstack 对齐

\documentclass{article}
\usepackage{amsmath,tabstackengine}
\TABstackMath
\setstacktabulargap{0pt}
\setstackgap{L}{1.2\baselineskip}
\begin{document}
\[
\tabularCenterstack{rcccl}{
\operatorname{I}[&a&;& c&] \\
\operatorname{I}[&w&;& a&] \\
\operatorname{I}[&c&;& w&]
}
\]
\end{document}

在此处输入图片描述

答案3

该解决方案基于对\hbox to“Op[a;b]”类型应用的“良好常数”的猜测

\def\operatorname#1[#2;#3]{#1\hbox to2.5em{$[\hss#2;\hss#3\hss]$}}

Test: $\operatorname{I}[a; c]$\par
Test: $\operatorname{I}[w; a]$\par
Test: $\operatorname{I}[i; j]$\par
Test: $\operatorname{I}[m; w]$\par

\bye

相关内容