
У меня есть таблица с математическими данными с подстрочными и надстрочными индексами. Они касаются как строк выше, так и ниже в таблице. Я перепробовал довольно много альтернатив, но не смог найти ничего, что давало бы подходящие интервалы в строках, не портя также интервалы в строке заголовка (т. е. делая заголовки слишком плотно выровненными по левому краю). Буду признателен за любые указания по наилучшему подходу для этого.
Вот мой текущий результат (я использую пакет array):
\begin{table}[htbp]
\begin{center}
\begin{tabular}{| m{2.7cm} | m{8cm}|}
\hline
\textbf{Marginalised term} & \textbf{3 variable terms} \\
\hline \hline
$H_\partial^{12}(\{12\})$ &
$\begin{aligned}
&H_\partial^{123}(\{12\}) + H_\partial^{123}(\{3\}\{12\}) \\
&+ H_\partial^{123}(\{12\}\{13\}) + H_\partial^{123}(\{12\}\{23\}) \\
&+ H_\partial^{123}(\{12\}\{13\}\{23\})
\end{aligned}$ \\
\hline
$H_\partial^{12}(\{1\})$ &
$H_\partial^{123}(\{1\})+H_\partial^{123}(\{1\}\{23\})+H_\partial^{123}(\{1\}\{3\})$ \\
\hline
$H_\partial^{12}(\{2\})$ &
$H_\partial^{123}(\{2\})+H_\partial^{123}(\{2\}\{13\})+H_\partial^{123}(\{2\}\{3\})$ \\
\hline
$H_\partial^{12}(\{1\}\{2\})$ &
$H_\partial^{123}(\{1\}\{2\})+H_\partial^{123}(\{1\}\{2\}\{3\})$ \\
\hline
\end{tabular}
\end{center}
\end{table}
Установка extrarowheight фиксирует верхнее расстояние для нижних трех рядов, но они все равно касаются нижней линии hline, а первый ряд касается и верхней, и нижней линий.
Добавление extrarowheight
не работает:
И также arraystrectch
(верхний ряд касается и вертикально центрируется):
решение1
Вы можете добавить вертикальные отступы к ячейкам, либо с помощью cellspace
, который определяетминимальныйпробелы в верхней и нижней части ячеек в столбцах со спецификатором, начинающимся с буквы S
, или с makecell
, которыйдобавляетфиксированный вертикальный интервал сверху и снизу всех ячеек, с помощью \makegapedcells
команды.
Обратите внимание, что вам не нужно устанавливать столбцы в режиме абзаца: второй код устанавливает ширину столбцов равной их естественной ширине.
\documentclass{article}
\usepackage{amsmath, array, makecell}
\usepackage{cellspace} %
\setlength\cellspacetoplimit{4pt}
\setlength\cellspacebottomlimit{4pt}
\begin{document}
\begin{table}[htbp]
\centering
\begin{tabular}{| S{m{2.7cm}} | Sl|}%{m{8cm}}
\hline
\textbf{Marginalised term} & \textbf{3 variable terms} \\
\hline \hline
$H_\partial^{12}(\{12\})$ &
$\begin{aligned}
&H_\partial^{123}(\{12\}) + H_\partial^{123}(\{3\}\{12\}) \\
&+ H_\partial^{123}(\{12\}\{13\}) + H_\partial^{123}(\{12\}\{23\}) \\
&+ H_\partial^{123}(\{12\}\{13\}\{23\})
\end{aligned}$ \\
\hline
$H_\partial^{12}(\{1\})$ &
$H_\partial^{123}(\{1\})+H_\partial^{123}(\{1\}\{23\})+H_\partial^{123}(\{1\}\{3\})$ \\
\hline
$H_\partial^{12}(\{2\})$ &
$H_\partial^{123}(\{2\})+H_\partial^{123}(\{2\}\{13\})+H_\partial^{123}(\{2\}\{3\})$ \\
\hline
$H_\partial^{12}(\{1\}\{2\})$ &
$H_\partial^{123}(\{1\}\{2\})+H_\partial^{123}(\{1\}\{2\}\{3\})$ \\
\hline
\end{tabular}
\end{table}
\begin{table}[htbp]
\centering\setcellgapes{4pt}\makegapedcells \renewcommand\theadfont{\normalsize\bfseries}%
%
\begin{tabular}{|l| l|}%{m{8cm}}
\hline
\thead{Marginalised\\ term} & \thead{3 variable terms} \\
\hline \hline
$H_\partial^{12}(\{12\})$ &
$\begin{aligned}
&H_\partial^{123}(\{12\}) + H_\partial^{123}(\{3\}\{12\}) \\
&+ H_\partial^{123}(\{12\}\{13\}) + H_\partial^{123}(\{12\}\{23\}) \\
&+ H_\partial^{123}(\{12\}\{13\}\{23\})
\end{aligned}$ \\
\hline
$H_\partial^{12}(\{1\})$ &
$H_\partial^{123}(\{1\})+H_\partial^{123}(\{1\}\{23\})+H_\partial^{123}(\{1\}\{3\})$ \\
\hline
$H_\partial^{12}(\{2\})$ &
$H_\partial^{123}(\{2\})+H_\partial^{123}(\{2\}\{13\})+H_\partial^{123}(\{2\}\{3\})$ \\
\hline
$H_\partial^{12}(\{1\}\{2\})$ &
$H_\partial^{123}(\{1\}\{2\})+H_\partial^{123}(\{1\}\{2\}\{3\})$ \\
\hline
\end{tabular}
\end{table}
\end{document}
решение2
Вероятно, есть лучший способ, но здесь я использую комбинацию распорок. Я добавил \upstrut
к верху стека aligned
, \downstrut
к низу стека aligned
и \mystrut
к простым линиям.
\documentclass{article}
\usepackage{tabularx,amsmath}
\newcommand\upstrut{\rule{0pt}{12pt}}
\newcommand\downstrut{\rule[-6pt]{0pt}{6pt}}
\newcommand\mystrut{\upstrut\downstrut}
\begin{document}
\begin{table}[htbp]
\begin{center}
\begin{tabular}{| m{2.7cm} | m{8cm}|}
\hline
\textbf{Marginalised term} & \textbf{3 variable terms} \\
\hline \hline
$H_\partial^{12}(\{12\})$ &
$\begin{aligned}
&\upstrut H_\partial^{123}(\{12\}) + H_\partial^{123}(\{3\}\{12\}) \\
&+ H_\partial^{123}(\{12\}\{13\}) + H_\partial^{123}(\{12\}\{23\}) \\
&+ H_\partial^{123}(\{12\}\{13\}\{23\}) \downstrut
\end{aligned}$ \\
\hline
$\mystrut H_\partial^{12}(\{1\})$ &
$H_\partial^{123}(\{1\})+H_\partial^{123}(\{1\}\{23\})+H_\partial^{123}(\{1\}\{3\})$ \\
\hline
$\mystrut H_\partial^{12}(\{2\})$ &
$H_\partial^{123}(\{2\})+H_\partial^{123}(\{2\}\{13\})+H_\partial^{123}(\{2\}\{3\})$ \\
\hline
$\mystrut H_\partial^{12}(\{1\}\{2\})$ &
$H_\partial^{123}(\{1\}\{2\})+H_\partial^{123}(\{1\}\{2\}\{3\})$ \\
\hline
\end{tabular}
\end{center}
\end{table}
\end{document}
В качестве альтернативы можно добавить \stackgap
к термину в каждой строке, что добавляет 3pt
буфер (по умолчанию) выше и ниже термина. Необязательный аргумент может изменить значение зазора стека:
\documentclass{article}
\usepackage{tabularx,amsmath,stackengine}
\begin{document}
\begin{table}[htbp]
\begin{center}
\begin{tabular}{| m{2.7cm} | m{8cm}|}
\hline
\textbf{Marginalised term} & \textbf{3 variable terms} \\
\hline \hline
$H_\partial^{12}(\{12\})$ &
\addstackgap{$\begin{aligned}
&H_\partial^{123}(\{12\}) + H_\partial^{123}(\{3\}\{12\}) \\
&+ H_\partial^{123}(\{12\}\{13\}) + H_\partial^{123}(\{12\}\{23\}) \\
&+ H_\partial^{123}(\{12\}\{13\}\{23\})
\end{aligned}$} \\
\hline
\addstackgap{$H_\partial^{12}(\{1\})$} &
$H_\partial^{123}(\{1\})+H_\partial^{123}(\{1\}\{23\})+H_\partial^{123}(\{1\}\{3\})$ \\
\hline
\addstackgap{$H_\partial^{12}(\{2\})$} &
$H_\partial^{123}(\{2\})+H_\partial^{123}(\{2\}\{13\})+H_\partial^{123}(\{2\}\{3\})$ \\
\hline
\addstackgap{$H_\partial^{12}(\{1\}\{2\})$} &
$H_\partial^{123}(\{1\}\{2\})+H_\partial^{123}(\{1\}\{2\}\{3\})$ \\
\hline
\end{tabular}
\end{center}
\end{table}
\end{document}
решение3
Самый привлекательный способ набрать эту таблицу — без вертикальных линий и с гораздо меньшим количеством, но хорошо разнесенных горизонтальных линий. Таким образом, проблема соприкосновения надстрочных и подстрочных терминов с горизонтальными линиями никогда не возникает изначально. И нет необходимости возиться с \arraystretch
.
Поскольку почти весь материал таблицы — это математические штуки, я предлагаю использовать array
окружение вместо tabular
окружения. Если ничего другого, вы можете избавить себя от необходимости вводить много $
символов.
Отдельно, поскольку H_\partial
встречается в таблице около 17 раз, я предлагаю вам заменить все вхождения на \Hp
, где \Hp
в преамбуле определено как, вы угадали, H_\partial
.
\documentclass{article}
\usepackage{amsmath,booktabs,array}
\newcommand{\Hp}{H_\partial} % shortcut macro
\begin{document}
\begin{table}[htbp]
\centering
$\begin{array}{@{}ll@{}}
\toprule
\multicolumn{1}{@{}m{2.7cm}}{\textbf{Marginalised term}} &
\textbf{3 variable terms} \\
\midrule
\Hp^{12}(\{12\}) &
\!\begin{aligned}[t]
&\Hp^{123}(\{12\}) + \Hp^{123}(\{3\}\{12\}) \\
&\quad+ \Hp^{123}(\{12\}\{13\}) + \Hp^{123}(\{12\}\{23\}) \\
&\quad+ \Hp^{123}(\{12\}\{13\}\{23\})
\end{aligned} \\
\addlinespace
\Hp^{12}(\{1\}) &
\Hp^{123}(\{1\})+\Hp^{123}(\{1\}\{23\})+\Hp^{123}(\{1\}\{3\}) \\
\addlinespace
\Hp^{12}(\{2\}) &
\Hp^{123}(\{2\})+\Hp^{123}(\{2\}\{13\})+\Hp^{123}(\{2\}\{3\}) \\
\addlinespace
\Hp^{12}(\{1\}\{2\}) &
\Hp^{123}(\{1\}\{2\})+\Hp^{123}(\{1\}\{2\}\{3\}) \\
\bottomrule
\end{array}$
\end{table}
\end{document}