通常,我能弄清楚如何布局的最佳方法是利用我从 HTML 中学到的思维方式,即表格中的表格。我如何修改影响外部表的参数而不影响内部表?
例如,假设我想执行下面的 MWE。
\documentclass{article}
\usepackage[left=0.50in, right=0.50in, top=0.50in, bottom=0.5in]{geometry}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{\textwidth}{lXX}
Short Title &
Longer sentence giving a description of the thing to the right. &
\({
\begin{bmatrix}
a & a & a & a \\
a & a & a & a \\
a & a & a & a \\
a & a & a & a
\end{bmatrix}
\begin{bmatrix}
b & b & b & b \\
b & b & b & b \\
b & b & b & b \\
b & b & b & b
\end{bmatrix}
=
\begin{bmatrix}
c & c & c & c \\
c & c & c & c \\
c & c & c & c \\
c & c & c & c
\end{bmatrix}
}\) \\
Another line &
That is like the one above. &
\({
\begin{bmatrix}
a & a & a & a \\
a & a & a & a \\
a & a & a & a \\
a & a & a & a
\end{bmatrix}
\begin{bmatrix}
b & b & b & b \\
b & b & b & b \\
b & b & b & b \\
b & b & b & b
\end{bmatrix}
=
\begin{bmatrix}
c & c & c & c \\
c & c & c & c \\
c & c & c & c \\
c & c & c & c
\end{bmatrix}
}\)
\end{tabularx}
\end{document}
显然,我希望外部表格的行和列之间有更多空间,而不影响内部表格(有时是tabular
而不是bmatrix
)。有时我想调整所有内部表格而不影响外部表格。
有没有一种简洁的方法可以做到这一点,而不用在整个过程中使用命令?例如,是否有一种 CSS 样式方法,我可以在其中定义一个表类,然后指定外部表属于某个与常规表不同的类?
更新
这是另一个例子。使用下面 egreg 的答案,我必须输入 2(r-1) 个实例\addlinespace
,它会中断垂直线。
\documentclass[12pt]{article}
\usepackage[landscape]{geometry}
\usepackage{amsmath}
\usepackage{booktabs}
\begin{document}
\begin{alignat*}{4}
&
\left[
\begin{array}{c|c}
\begin{bmatrix}
a & b
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
a & b
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\\ \hline
\begin{bmatrix}
c & d
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
c & d
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\\ \hline
\begin{bmatrix}
e & f
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
e & f
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\end{array}
\right]
&&
\renewcommand\arraystretch{1.2}
\left[
\begin{array}{c|c}
\begin{bmatrix}
a & b
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
a & b
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\\ \hline
\begin{bmatrix}
c & d
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
c & d
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\\ \hline
\begin{bmatrix}
e & f
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
e & f
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\end{array}
\right]
&&
\renewcommand\arraystretch{1}
\left[
\begin{array}{c|c}
\begin{bmatrix}
a & b
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
a & b
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\\ \addlinespace \hline \addlinespace
\begin{bmatrix}
c & d
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
c & d
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\\ \addlinespace \hline \addlinespace
\begin{bmatrix}
e & f
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
e & f
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\end{array}
\right]
&&
\left[
\begin{array}{c|c}
\begin{bmatrix}
a & b
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
a & b
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\\[12pt] \hline
\begin{bmatrix}
c & d
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
c & d
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\\[12pt] \hline \\[12pt]
\begin{bmatrix}
e & f
\end{bmatrix}
\begin{bmatrix}
w \\ y
\end{bmatrix}
&
\begin{bmatrix}
e & f
\end{bmatrix}
\begin{bmatrix}
x \\ z
\end{bmatrix}
\end{array}
\right]
\\
&\text{No changes.}&
&
\begin{array}{l}
\text{\textbackslash arraystretch} \\ \text{changes everything}
\end{array}
&
&\text{Using \textbackslash addlinespace.}&
&\begin{array}{l}
\text{Nope.} \\ \text{and O.M.G.!!}
\end{array}
\end{alignat*}
\end{document}
我只是想做类似的事情(伪代码):
define OuterRowAndColSpacing
\begin{OuterArrayOrTable}[OuterRowAndColSpacing]
\begin{InnerMatrix}
...
\end{InnerMatrix}
...
\end{OuterArrayOrTable}
并使一切正常运行。
(今天就是这样的一天:你收到了一份 Word 文档,你会接受它,你会喜欢它!)
答案1
明确设置列间距:
\documentclass{article}
\usepackage[left=0.50in, right=0.50in, top=0.50in, bottom=0.5in]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tabularx,booktabs}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{
@{}% no left padding
l
@{\hspace{2cm}}% more padding (exaggerated)
X
@{\qquad}% more padding
X
@{}% no right padding
}
Short Title &
Longer sentence giving a description of the thing to the right. &
\(
\begin{bmatrix}
a & a & a & a \\
a & a & a & a \\
a & a & a & a \\
a & a & a & a
\end{bmatrix}
\begin{bmatrix}
b & b & b & b \\
b & b & b & b \\
b & b & b & b \\
b & b & b & b
\end{bmatrix}
=
\begin{bmatrix}
c & c & c & c \\
c & c & c & c \\
c & c & c & c \\
c & c & c & c
\end{bmatrix}
\) \\
\addlinespace
Another line &
That is like the one above. &
\(
\begin{bmatrix}
a & a & a & a \\
a & a & a & a \\
a & a & a & a \\
a & a & a & a
\end{bmatrix}
\begin{bmatrix}
b & b & b & b \\
b & b & b & b \\
b & b & b & b \\
b & b & b & b
\end{bmatrix}
=
\begin{bmatrix}
c & c & c & c \\
c & c & c & c \\
c & c & c & c \\
c & c & c & c
\end{bmatrix}
\)
\end{tabularx}
\end{document}
我使用\addlinespace
来booktabs
更好地区分行。