Я пишу университетский проект и хочу создать таблицу с левой колонкой, содержащей диаграммы Фейнмана (которые я нарисовал с помощью пакета feynmp), и правой колонкой, содержащей уравнения. Однако, когда я это делаю, уравнения выравниваются вертикально в нижней части ячейки, и я не могу понять, как это изменить, чтобы они выровнялись по центру диаграммы в той же строке.
Вот пример кода, который, я надеюсь, продемонстрирует проблему, не требуя написания всего отчета.
\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*}
решение1
Вы можете использовать m{width}
табличный вариант:
\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}
решение2
Вы можете сохранить c
ячейки, не указывая их ширину, с помощью простого \raisebox[-\height}
(плюс визуальная коррекция, если необходимо). Я добавил немного вертикального отступа с помощью пакета cellspace
:
\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}
решение3
Вы также можете использоватьtikz-feynman
(страница проекта). В частности, он имеет опцию inline
, которая корректирует базовую линию диаграммы (таким же образом, какbaseline
работает в TiкZ) и также делает диаграмму немного меньше, чтобы она хорошо вписывалась в уравнения или, в данном случае, в таблицы.
\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}
решение4
Как я уже писал в вашем перекрестном сообщении наLaTeX-Community.org, вы можете использовать adjustbox
пакет или stackengine
пакет, как показано в этом примере с использованием вашего кода. Таким образом, вам не нужны m столбцов, которые требуют фиксированной ширины.
\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}
Вы также можете изменить выравнивание по верхнему краю следующим образом:
\belowbaseline[0pt]{\includegraphics{diagram}}
&
\belowbaseline[0pt]{$\begin{aligned} I &= \\
&\frac{D}{4} \end{aligned}$}\\
На диаграмме внизу расположена базовая линия для вертикального выравнивания. Базовая линия дляaligned
математической среды находится в ее центре (но ее можно изменить на верхнюю или нижнюю линию). В таблице базовые линии выровнены рядом друг с другом. Поэтому вы видите, что диаграмма поднимается выше базовой линии, математический текст на базовой линии остается внизу. Это выравнивание по базовой линии, а не по верхнему краю. Изменение его так, чтобы он рос ниже базовой линии, как это сделал я, дает верхнее выравнивание. См. такжеСообщение на форуме LaTeXдля справки или дальнейшего обсуждения.