Как сделать так, чтобы один элемент имел такую ​​же ширину, как и другой? (фантом?)

Как сделать так, чтобы один элемент имел такую ​​же ширину, как и другой? (фантом?)

(Контекст: у меня есть случай, когда я использую MathJax и HTML-таблицу с ячейками для различных выражений, которые я хочу выровнять, поэтому я не могу использовать среду align.)

Есть ли способ заставить один элемент иметь ту же ширину, что и другой? Я знаю о \phantom, поэтому, например, эти фрагменты должны иметь одинаковую ширину:

a+x^2+b 

a+\phantom{x^2}+b  

Но что, если я хочу отобразить a+0+bвместо a+x^2+bи хочу, 0чтобы он был центрирован в hbox с той же шириной, что и x^2?

решение1

Вы можете поместить 0 в центр рамки размером с пропущенное выражение.

введите описание изображения здесь

\documentclass{article}

\begin{document}

$a+x^2+b $

$a+\phantom{x^2}+b  $


\sbox0{$x^2$}

$a+\makebox[\wd0]{$0$}+b$

\end{document}

решение2

Ага, использование \rlapand \llapсработало у меня для контента, выровненного по левому и правому краю:

a+\phantom{x^2}\llap{0}+b

Я не знаю, как добиться центрирования контекста, но я могу смягчить это требование, если потребуется.

решение3

Конечно, в MathJax это не сработает.

\documentclass{article}
\usepackage{mathtools,calc}

\begin{document}

$a+x^2+b $

$a+\phantom{x^2}+b  $

$a+\mathmakebox[\widthof{$\displaystyle x^2$}]{0}+b$

\end{document}

введите описание изображения здесь

решение4

Решение с помощью eqparboxпакета: он определяет команды для тегированных блоков, так что тегированный блок имеет ширину самого широкого содержимого в блоках, имеющих тот же тег (требуется две компиляции):

\documentclass{article}
\usepackage{mathtools,calc}
\usepackage{eqparbox}
\newcommand\eqmathbox[2][]{\eqmakebox[1]{$#2$}}

\begin{document}

$a+\eqmathbox[M]{x^2}+b $

 $ a+\eqmathbox[M]{0}+b $

\end{document} 

введите описание изображения здесь

Связанный контент