关于数组环境中使用@{}的问题

关于数组环境中使用@{}的问题

我看到人们@{}在阵列环境中使用对齐线性程序。我可以理解 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,至少在此来源{,并且是标准表格列说明符的一部分。它用和之间的内容替换列分隔}符,在本例中为空,这对于制作非常精简的表格、数组等很有用。

在您的示例中,它用于减少求和符号与其操作数之间的距离。

相关内容