![如何使文本出现在数学模式中的幻影中间?](https://linux22.com/image/415610/%E5%A6%82%E4%BD%95%E4%BD%BF%E6%96%87%E6%9C%AC%E5%87%BA%E7%8E%B0%E5%9C%A8%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%BC%8F%E4%B8%AD%E7%9A%84%E5%B9%BB%E5%BD%B1%E4%B8%AD%E9%97%B4%EF%BC%9F.png)
我想让方程的一部分出现在(水平)幻影的中心。例如,这对于制作支架宽度相同,看起来仍然很自然。这就是我想要的结果:
。
我知道如何在幻像内写右对齐和左对齐的文本:
\usepackage{mathtools}
\begin{gather*}
1 + \mathrlap{B}\phantom{ABC} + 2 \\
1 + \phantom{ABC}\mathllap{B} + 2 \\
1 + ABC + 2
\end{gather*}
我尝试使用这个宏来制作居中文本,但是没有效果:
\usepackage{mathtools}
\usepackage{calc}
\newcommand{\hmask}[2]{
\parbox{\widthof{#1}/2}{}
\mathclap{#2}
\parbox{\widthof{#1}/2}{}
}
\newcommand{\mask}[2]{\vphantom{#1}\hmask{#1}{#2}}
答案1
答案2
适用于所有风格的版本。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\mask}[2]{{\mathpalette\mask@{{#1}{#2}}}}
\newcommand{\mask@}[2]{\mask@@{#1}#2}
\newcommand{\mask@@}[3]{%
\settowidth{\dimen@}{$\m@th#1#2$}%
\makebox[\dimen@]{$\m@th#1#3$}%
}
\makeatother
\begin{document}
\begin{gather*}
1 + \mask{ABC}{B} + 2 \\
1 + ABC + 2 \\
1 + \mask{\int_0^1 f(x)\,dx}{y}+2 \\
1 + \int_0^1 f(x)\,dx+2
\end{gather*}
\[
\begin{array}{c}
1 + \mask{\int_0^1 f(x)\,dx}{y}+2 \\
1 + \int_0^1 f(x)\,dx+2
\end{array}
\]
\[
\sum_{\substack{1\le \mask{w}{i}\le n \\ 1\le w\le n}} a_{iw}
\]
\end{document}