Como forçar um elemento a ter a mesma largura de outro? (fantasma?)

Como forçar um elemento a ter a mesma largura de outro? (fantasma?)

(Contexto: tenho um caso em que estou usando MathJax e uma tabela HTML com células para diversas expressões que desejo alinhar, por isso não posso usar um alignambiente.)

Existe uma maneira de forçar um elemento a ter a mesma largura de outro? Eu conheço \phantom, então, por exemplo, esses fragmentos devem ter a mesma largura:

a+x^2+b 

a+\phantom{x^2}+b  

Mas e se eu quiser mostrar a+0+bem vez de a+x^2+b, e quiser 0ser centralizado em um hbox com a mesma largura que x^2?

Responder1

Você pode centralizar o 0 em uma caixa do tamanho da expressão omitida

insira a descrição da imagem aqui

\documentclass{article}

\begin{document}

$a+x^2+b $

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


\sbox0{$x^2$}

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

\end{document}

Responder2

Aha, o uso \rlape \llapfuncionou para mim para conteúdo justificado à esquerda e à direita:

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

Não sei como centralizar o contexto, mas posso relaxar esse requisito se for necessário.

Responder3

É claro que isso não funcionará no 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}

insira a descrição da imagem aqui

Responder4

Uma solução com o eqparboxpacote: ele define comandos de caixa marcada para que uma caixa marcada tenha a largura do conteúdo mais largo em caixas que compartilham a mesma tag (requer duas compilações):

\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} 

insira a descrição da imagem aqui

informação relacionada