我看到人们@{}
在阵列环境中使用对齐线性程序。我可以理解 l 表示将数组单元格向左刷新,但无法理解其用途,@{}
也无法在谷歌中找到它。:-(
有人能帮忙提供一个链接或一些建议,告诉我在哪里可以找到的含义@{}
吗?
下面是他们使用的数组@{}
。
\documentclass[a4paper]{article}
\usepackage[paper size={10cm,5cm}]{geometry}
\pagestyle{empty}
\usepackage{amsmath,amssymb}
\begin{document}
\begin{equation*}
\begin{array}{ll@{}ll}
\text{minimize} & \displaystyle\sum\limits_{j=1}^{m} w_{j}&x_{j} &\\
\text{subject to}& \displaystyle\sum\limits_{j:e_{i} \in S_{j}} &x_{j} \geq 1, &i=1 ,..., n\\
& &x_{j} \in \{0,1\}, &j=1 ,..., m
\end{array}
\end{equation*}
\end{document}
答案1
@{command}
定义前后的空间一柱子!{command}
定义应打印为垂直线的内容
\documentclass[border=14pt]{standalone}
\usepackage{array}
\begin{document}
\begin{tabular}{@{dimen} c !{rule} c !{\vrule width 5pt}}\hline
foo & bar \\\hline
\end{tabular}
\end{document}
而不是空格命令,而是在条目前直接写入 dimen foo
。而不是垂直线,而是rule
在前后写入空格。右侧垂直线的宽度设置为 5pt。但是,@{}
列前/后没有空格或@{\kern2em}
2em 的空格更有意义 :-)
答案2
@egreg 已经在评论中回答了您的主要问题:@{}
抑制插入位置的列间空格,而不仅仅是第一列的左侧和最后一列的右侧。
我发现使用环境array
内的环境来编写这组特定的方程式equation*
非常麻烦。我认为更自然的方法是使用gather*
或align*
环境。在下面的代码中,我建议使用aligned
嵌套在环境内的环境(第二行和第三行)gather*
;我认为对齐所有三行没有什么用处。
数学排版的一些要点:
- 不要打字
...
;\dots
而是打字。 - 不要输入
:
数学表达式;使用\colon
。 - 为了避免在第二个求和符号的左侧和右侧出现大量空格,请将其下标项放在
\mathclap
宏中。
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{gather*}
\text{minimize }\sum_{j=1}^{m} w_{j}x_{j}\\
\begin{aligned}
\text{subject to }
\sum_{\mathclap{j\colon e_{i} \in S_{j}}}x_{j} \ge 1, &\quad i=1,\dots,n\\
x_j \in \{0{,}1\}, & \quad j=1,\dots,m
\end{aligned}
\end{gather*}
\end{document}
答案3
它被称为@-expression,至少在此来源{
,并且是标准表格列说明符的一部分。它用和之间的内容替换列分隔}
符,在本例中为空,这对于制作非常精简的表格、数组等很有用。
在您的示例中,它用于减少求和符号与其操作数之间的距离。