我想在表格的行之间添加一些空间,特别是为了防止矩阵中的括号接触,参见此 MWE:
\documentclass{article}
\newcommand*{\mymatrix}[1]{
\ensuremath{%
\left[\begin{tabular}{@{}l@{}}#1\end{tabular}\right]%
}%
}
\begin{document}
\begin{tabular}{*3{l}}
foo & bar & baz\\
foo & \mymatrix{top\\bottom} & baz\\
foo & \mymatrix{top\\bottom} & baz\\
foo & bar & baz\\
\end{tabular}
\end{document}
TeX.SE 上有很多问题询问如何在表格中添加行间距,在我看来,答案总是建议增加\arraystretch
,例如这个问题其中有很多。
但据我所知,这实际上并没有增加空间之间行,它只是垂直拉伸行。如果有东西填充了行的垂直空间,就像我的矩阵一样,这些行的内容仍然会接触,参见下文:
\documentclass{article}
\newcommand*{\mymatrix}[1]{
\ensuremath{%
\left[\begin{tabular}{@{}l@{}}#1\end{tabular}\right]%
}%
}
\renewcommand{\arraystretch}{2}
\begin{document}
\begin{tabular}{*3{l}}
foo & bar & baz\\
foo & \mymatrix{top\\bottom} & baz\\
foo & \mymatrix{top\\bottom} & baz\\
foo & bar & baz\\
\end{tabular}
\end{document}
所以我的问题是,有没有办法真正增加空间之间表中的行(除了插入空行,这会增加太多空间)?
答案1
这是一个采用\addlinespace
的解决方案书签包裹。
\addlinespace
带有一个可选参数,表示应插入多少垂直空格。如果没有指定参数,则应用由包\defaultaddspace
设置的参数。0.5em
\documentclass{article}
\newcommand*{\mymatrix}[1]{%
\ensuremath{\left[\begin{tabular}{@{}l@{}} #1 \end{tabular}\right]}}
\usepackage{booktabs} % for "\addlinespace" macro
\begin{document}
\begin{tabular}{*{3}{l}}
foo & bar & baz\\
foo & \mymatrix{top\\bottom} & baz\\ \addlinespace
foo & \mymatrix{top\\bottom} & baz\\ \addlinespace
foo & bar & baz
\end{tabular}
\end{document}
答案2
如果您使用{NiceTabular}
,nicematrix
则您有两个选项cell-space-top-limit
和cell-space-bottom-limit
(名称受 的参数\cellspacetoplimit
和cellspacebottomlimit
启发cellspace
),您可以一次设置它们,它们将应用于所有环境{NiceTabular}
。
\documentclass{article}
\usepackage{nicematrix}
\NiceMatrixOptions{cell-space-top-limit=1pt,cell-space-bottom-limit=1pt}
\newcommand*{\mymatrix}[1]{
\ensuremath{%
\left[\begin{tabular}{@{}l@{}}#1\end{tabular}\right]%
}%
}
\begin{document}
\begin{NiceTabular}{*3{l}}
foo & bar & baz\\
foo & \mymatrix{top\\bottom} & baz\\
foo & \mymatrix{top\\bottom} & baz\\
foo & bar & baz\\
\end{NiceTabular}
\end{document}
答案3
这能解决问题吗
无额外包裹
\documentclass{article}
\newcommand*{\mymatrix}[1]{
\ensuremath{%
\left[\begin{tabular}{@{}l@{}}#1\end{tabular}\right]%
}%
}
\begin{document}
\begin{tabular}{*3{l}}
foo & bar & baz\\
foo & \mymatrix{top\\bottom} & baz\\[8pt]
foo & \mymatrix{top\\bottom} & baz\\[8pt]
foo & bar & baz\\
\end{tabular}
\end{document}
**编辑添加预定义支柱也有效**
相同的结果
\def\mystrut{\rule{0pt}{2\normalbaselineskip}}
\begin{tabular}{*3{l}}
foo & bar & baz\\
foo & \mymatrix{top\\bottom}\mystrut & baz\\[8pt]
foo & \mymatrix{top\\bottom}\mystrut & baz\\[8pt]
foo & bar & baz\\
\end{tabular}
答案4
使用 可以轻松自动获得您想要的内容cellspace
,它定义以字母 为前缀的说明符的列中单元格顶部和底部的最小垂直间距S
,或者C
如果您siunitx
通过加载时间选项加载 ,甚至加载您喜欢的任何字母column=
:
\documentclass{article}
\usepackage[column=O]{cellspace}
\setlength{\cellspacetoplimit}{3pt}
\setlength{\cellspacebottomlimit}{3pt}
\newcommand*{\mymatrix}[1]{
\ensuremath{%
\left[\begin{tabular}{@{}l@{}}#1\end{tabular}\right]%
}%
}
\begin{document}
\begin{tabular}{*3{Ol}}
foo & bar & baz\\
foo & \mymatrix{top\\bottom} & baz\\
foo & \mymatrix{top\\bottom} & baz\\
foo & bar & baz
\end{tabular}
\end{document}