![这个数组前导中的所有这些 @{} 和 @{\quad} 是什么意思?](https://linux22.com/image/326466/%E8%BF%99%E4%B8%AA%E6%95%B0%E7%BB%84%E5%89%8D%E5%AF%BC%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E8%BF%99%E4%BA%9B%20%40%7B%7D%20%E5%92%8C%20%40%7B%5Cquad%7D%20%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%EF%BC%9F.png)
当我读到不同的问题时这个我发现了数组环境的代码,其前言是相当未知的...我知道它的作用,但我想理解它,以便能够在不同情况下使用该技术...我明白“ c
”“ l
”“ r
”的意思,但不明白其余部分:
\[
\begin{array}{@{}r@{}l@{\quad}@{}r@{}l@{}}
a&{}=bbb & c&{}=\dfrac{x}{y} \\
aa&{}=bbbb & cc&{}=\dfrac{x}{y}
\end{array}
\]
我试图以这样的形式应用它,即我只有一个居中列,然后左右两侧根据 = 内部对齐,因此我
\begin{array}{c@{\quad}@{}r@{}l@{}}
按照上面的例子在环境中写了一些东西,但是它给了我一个错误,即数组前言中有未知字符...所以很明显我不明白那些“ @{}
“resp “ @{\quad}
”部分,我在网上找不到满意的答案......
答案1
array
在(或) latex的每一列的两侧tabular
添加\arraycolsep
) (或\tabcolsep
)个空格,因此通常列之间tabular
会有空格。2\arraycolsep
如果你走的话@{hello}
话反而在每行的列之间添加乳胶插入物的空间hello
。
有时你会看到这样的形式,r@{\mbox{--}}l
看起来2 & 3
像2-3
然而,最常见的形式是@{}
不添加任何内容但删除列间空间。
\quad
是的缩写,\hspace{1em}
因此@{\quad}
将列间距从2\arraycolsep
(通常为 10pt)更改为1em
(通常为 10pt)。
答案2
tabular
以下是在或 的序言构造中提到此符号的正式参考array
:
source2e
(部分56.2array
和tabular
环境,第 300 页)array
或环境的 PREAMBLE 参数tabular
可以包含以下内容:l
,,r
:c
指示要放置条目的位置。|
: 表示垂直规则@{EXP}
EXP
:在每一列中插入文本。
\arraycolsep
或\tabcolsep
抑制间距。*{N}{PRE}
:相当于在序言中写了N
副本。可能包含表达式。PRE
PRE
*{N’}{EXP’}
p{LEN}
:输入\parbox
宽度LEN
。
@{<stuff>}
抑制列间分离并改用<stuff>
。
答案3
David Carlisle 已经对做什么@{}
和@{\quad}
做什么给出了详尽的回答。我想补充一点关于如何array
首先更优雅地设置代码的意见,这样就可以避免需要五个 [5!] 指令实例@{}
。
\setlength\arraycolsep{0pt}
具体来说,通过在 之后立即插入指令,可以避免\[
所有五个 实例,从而简化设置 结构的代码:@{}
array
\documentclass{article}
\usepackage{amsmath} % for "\dfrac" macro
\begin{document}
\[
\setlength\arraycolsep{0pt} % default value: 5pt
\begin{array}{rl @{\quad} rl}
a&{}=bbb & c&{}=\dfrac{x}{y} \\[3ex]
aa&{}=bbbb & cc&{}=\dfrac{x}{y}
\end{array}
\]
\end{document}