Alinhamento vertical de equações em uma tabela

Alinhamento vertical de equações em uma tabela

Estou escrevendo um projeto universitário e quero criar uma tabela com a coluna da esquerda contendo diagramas de Feynman (que desenhei usando o pacote feynmp) e a coluna da direita contendo equações. Quando faço isso, entretanto, as equações ficam alinhadas verticalmente na parte inferior da célula, e não consigo descobrir como alterar isso, para que fiquem alinhadas com o centro do diagrama na mesma linha.

Aqui está um exemplo de código que espero demonstrar o problema sem escrever todo o meu relatório.

\begin{table*}[t]
\centering
\begin{tabular}{|c|c|}
\hline
\textbf{feynmp diagram goes here}
&
$\begin{aligned} I &= \\ &\frac{D}{4} \end{aligned}$
\\
\hline
\end{tabular}
\end{table*}

Responder1

Você pode usar a m{width}opção tabular:

\documentclass{article}

\usepackage{array}
\usepackage{amsmath}

\begin{document}
\begin{table*}[t]
\centering
\begin{tabular}{|c|m{5cm}|}
\hline
\textbf{feynmp diagram goes here} \newline
&
$\begin{aligned} I &= \\ &\frac{D}{4} \end{aligned}$
\\
\hline
\end{tabular}
\end{table*}
\end{document}

Responder2

Você pode manter cas células, sem especificar sua largura, com um simples \raisebox[-\height}(mais uma correção visual se necessário). Eu adicionei algum preenchimento vertical ao cellspacepacote:

\documentclass{article}
\usepackage{graphicx}
\usepackage{array}
\usepackage{amsmath}
\usepackage{cellspace}
\setlength\cellspacetoplimit{6pt}
\setlength\cellspacebottomlimit{6pt}

\begin{document}

\begin{table*}[t]
  \centering
  \begin{tabular}{|Sc|c|}
    \hline
    \raisebox{\dimexpr-0.5\height+1ex\relax }{\fbox{\includegraphics[scale = 0.4]{Feynmann}}}
      & $ \begin{aligned} I & = \\\hline &\frac{D}{4} \end{aligned}$ \\
    \hline
  \end{tabular}
\end{table*}

\end{document} 

insira a descrição da imagem aqui

Responder3

Você também pode usartikz-feynman(página do projeto). Em particular, tem a opção inlinede ajustar a linha de base do diagrama (da mesma forma que baselinefunciona em TikZ) e também torna o diagrama um pouco menor para que ele se encaixe perfeitamente em equações ou, neste caso, em tabelas.

\documentclass{article}

\usepackage[compat=1.1.0]{tikz-feynman}
\usepackage{booktabs}

\begin{document}
\begin{tabular}{cc}
  \toprule
  \multicolumn{2}{c}{\textbf{Feynman Rules}} \\
  \midrule
  \feynmandiagram[inline=(a), horizontal=i1 to a] {
    i1 [particle=\(A_{\mu}\)] -- [photon] a -- [fermion] f1,
    a -- [anti fermion] f2,
  }; &
  \(\displaystyle ig \gamma_{\mu}\) \\
  \feynmandiagram[inline=(a), horizontal=i1 to a] {
    i1 [particle=\(W^{\pm}_{\mu}\)]-- [photon] a -- [fermion] f1,
    a -- [anti fermion] f2,
  }; &
  \(\displaystyle \frac{ig}{\sqrt{2}} \gamma_{\mu} \frac{1 - \gamma_{5}}{2}\) \\
  \bottomrule
\end{tabular}
\end{document}

saída

Responder4

Como já escrevi em sua postagem cruzada emLaTeX-Community.org, você poderia usar o adjustboxpacote ou o stackenginepacote, como demonstrado neste exemplo usando seu código. Portanto, você não precisa de m colunas que exigem uma largura fixa.

\documentclass{article} 
\usepackage[demo]{graphicx}
\usepackage{amsmath}
\usepackage{stackengine}
\begin{document}
\begin{table*}[t]
\centering
\begin{tabular}{|c|c|}
  \hline
  \Centerstack{\includegraphics{diagram}}
    &
  $\begin{aligned} I &= \\
  &\frac{D}{4} \end{aligned}$\\
\hline
\end{tabular}
\end{table*}
\end{document}

Saída centralizada

Você também pode mudar para o alinhamento superior desta forma:

  \belowbaseline[0pt]{\includegraphics{diagram}}
    &
  \belowbaseline[0pt]{$\begin{aligned} I &= \\
      &\frac{D}{4} \end{aligned}$}\\

saída superior

O diagrama tem a linha base para alinhamento vertical na parte inferior. A linha de base para o alignedambiente matemático está no centro (mas pode ser alterada para linha superior ou inferior). Na tabela, as linhas de base estão alinhadas uma ao lado da outra. Então você vê o diagrama subindo acima da linha de base, o texto matemático na linha de base permanece baixo. É o alinhamento da linha base, não o alinhamento superior. Alterá-lo para crescer abaixo da linha de base, como eu fiz, proporciona alinhamento superior. Veja também oPostagem no fórum LaTeXpara referência ou discussão adicional.

informação relacionada