
Я немного поискал на форуме, но не смог найти удовлетворительного решения моей проблемы.
Я хочу создать таблицу, в которой я сравниваю две разные ситуации, а строка сравнения — это массив/матрица. Я хочу, чтобы интервал для таблицы был немного больше, потому что все слишком плотно. Поэтому я использую изменение внутри \arraystretch
групп:
\begin{center}
\renewcommand*{\arraystretch}{1.5}
\begin{tabular}{|c|c|}
\hline
Problem (1) & Problem (2)\\
\hline
\begingroup
\renewcommand*{\arraystretch}{1}
$\left\{
\begin{array}{c}
G_1 = 1\\
G_2 = 0
\end{array}
\right.$
\endgroup
&
\begingroup
\renewcommand*{\arraystretch}{1}
$\left\{
\begin{array}{c}
G_1 = 0\\
G_2 = 1
\end{array}
\right.$
\endgroup
\\
\hline
displacement $u_1(x,y) = \chi_1(y)$ & displacement $u_1(x,y) = \chi_2(y)$\\
\hline
\end{tabular}
\end{center}
Это хорошо работает для текстовых строк, но с массивом/матрицей внутри, это не добавляет никакого дополнительного пространства сверху и снизу, что не то, что я ожидал. Если вы увеличите over \arraystretch
, 3
вы увидите пространство сверху массивов, затем увеличение to 4
позволит вам увидеть, как пространство появляется снизу.
Есть ли у кого-нибудь идеи, как заставить LaTeX понять, что массив должен быть окружен пространством?
Дополнительный вопрос: при большом числе для \arraystretch
(над 4
), вертикальное выравнивание кажется не по центру, а немного внизу. Есть ли какие-то варианты, кроме использования tabularx
, мини-страниц и т. д.?
решение1
Вам на самом деле не нужно менять значение \arraystretch
. makecell
Пакет может задать вертикальный отступ строкам. Более того, вы можете иметь правила с переменной толщиной и переносы строк внутри ячеек с помощью одноименной команды. Для формул проще использовать среду cases
.
Я согласен с комментариями @Mico об использовании команды booktabs rules и отсутствии вертикальных правил. Если вы используете вертикальные правила, я покажу, как можно улучшить (на мой вкус!) такие таблицы.
\documentclass{article}
\usepackage{array, booktabs}
\usepackage{makecell}
\setcellgapes{3pt}
\usepackage{mathtools}
\begin{document}
\begin{center}
\makegapedcells
\begin{tabular}{!{\vrule width 1pt}c|c!{\vrule width 1pt}}
\Xhline{1pt}
Problem (1) & Problem (2) \\
\hline
$ \begin{cases}
G_1 = 1\\
G_2 = 0
\end{cases}$
&
$ \begin{cases}
G_1 = 0\\
G_2 = 1
\end{cases} $
\\
\hline
\makecell{displacement \\$u_1(x,y) = \chi_1(y)$} & \makecell{displacement \\ $u_1(x,y) = \chi_2(y)$}\\
\Xhline{1pt}
\end{tabular}
\end{center}
\vskip1cm
\begin{center}
\makegapedcells
\begin{tabular}{@{}cc@{}}
\toprule
Problem (1) & Problem (2) \\
\cmidrule(lr){1-1}\cmidrule(lr){2-2}
$ \begin{dcases}
G_1 = 1\\
G_2 = 0
\end{dcases}$
&
$ \begin{cases}
G_1 = 0\\
G_2 = 1
\end{cases} $
\\
\addlinespace
displacement $u_1(x,y) = \chi_1(y)$ & displacement $u_1(x,y) = \chi_2(y)$ \\
\bottomrule
\end{tabular}
\end{center}
\end{document}
решение2
Вместо того, чтобы тратить время на выяснение расстояния над и под различными\hline
s, вы можете просто избавиться от внутренних горизонтальных линий (и всех вертикальных линий) и использовать макросы рисования линийзакладкипакет для рисования верхней и нижней линий. Конечно, вы все равно можете использовать инструкцию, \renewcommand{\arraystretch}{1.5}
если хотите.
Надеюсь, вы согласитесь со мной, что этот макетпо меньшей меретакой же читабельный, как и тот, в котором гораздо больше вертикальных и горизонтальных линий...
\documentclass{article}
\usepackage{amsmath} % for 'cases' environment
\usepackage{booktabs} % for \toprule, \bottomrule, and \addlinespace macros
\begin{document}
\begin{center}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{@{}cc@{}}
\toprule
Problem (1) & Problem (2) \\ \addlinespace
$\begin{cases}
G_1 = 1\\G_2 = 0
\end{cases}$
&
$\begin{cases}
G_1 = 0\\G_2 = 1
\end{cases}$ \\ \addlinespace
displacement $u_1(x,y) = \chi_1(y)$ &
displacement $u_1(x,y) = \chi_2(y)$ \\
\bottomrule
\end{tabular}
\end{center}
\end{document}