在下面的代码中,我让 LaTeX 显示一个包含 n 个变量的 m 个线性方程组。我有正确的对齐方式,但在两个方面显示不正确。垂直点在列中没有完全居中,并且在每个方程中,“+”和“=”附近有一个不合适的宽空间。我希望 LaTeX 将这些点居中,并且我希望在二元加法运算符和二元等式关系附近有适当的空间。
\documentclass[10pt]{amsart}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\begin{document}
\begin{align*}
\left\{
\begin{array}{ccccccccccc}
a_{1,1}x_{1} & + & a_{1,2}x_{2} & + & \cdots & + & a_{1,n}x_{n} & = & b_{1} \\
a_{2,1}x_{1} & + & a_{2,2}x_{2} & + & \cdots & + & a_{2,n}x_{n} & = & b_{2} \\
\vdots & & \vdots & & \ddots & & \vdots & & \vdots \\
a_{m,1}x_{1} & + & a_{m,2}x_{2} & + & \cdots & + & a_{m,n}x_{n} & = & b_{m} \\
\end{array}
\right.
\end{align*}
\end{document}
答案1
这是一个解决方案,它基本上采用您的代码并仅修改长度参数\arraycolsep
;它的默认值(在我熟悉的所有 LaTeX 文档类中)是5pt
,我将其设置为1.5pt
围绕+
符号和2.5pt
围绕=
符号。这些更改还会带来符号定位的变化\vdots
。
\documentclass[10pt]{amsart}
%\usepackage{amsmath} % none of these packages are used for this MWE
%\usepackage{amsfonts}
%\usepackage{amssymb}
%\usepackage{amsthm}
%\usepackage{mathtools}
\begin{document}
\[ % no need to use "align*" env.
\setlength\arraycolsep{1.5pt} % default value: 5pt
\left\{
\begin{array}{ccc ccc c @{\extracolsep{2.5pt}}c@{\extracolsep{2.5pt}}c}
a_{1,1}x_{1} & + & a_{1,2}x_{2} & + & \cdots & + & a_{1,n}x_{n} & = & b_{1} \\
a_{2,1}x_{1} & + & a_{2,2}x_{2} & + & \cdots & + & a_{2,n}x_{n} & = & b_{2} \\
\vdots & & \vdots & & \ddots & & \vdots & & \vdots \\
a_{m,1}x_{1} & + & a_{m,2}x_{2} & + & \cdots & + & a_{m,n}x_{n} & = & b_{m} \\
\end{array}
\right.
\]
\end{document}
附录,由 OP 的一些后续问题引发:OP 问我如何得出长度1.5pt
和2.5pt
。首先,一些准备工作。默认情况下,TeX\medmuskip = 4 mu plus 2.0 mu minus 4.0 mu
在数学类型的项mathord
和mathbin
(例如+
)之间以及\thickmuskip = 5mu plus 5mu
数学类型的项mathrel
(例如=
)周围插入。这些“粘合”长度中的拉伸和收缩组件仅在 TeX 认为需要拉伸或收缩表达式时才发挥作用;为了讨论的目的,我们可以分别使用固定长度和4mu
。5mu
(1 mu
= 1/18 em
,其中 em-space 通常是字母的宽度M
。)但请注意,诸如符号周围的空间=
可以大大扩展但不能收缩。
在上面给出的答案中,我选择了1.5pt
而不是4mu
作为列之间的默认间距,原因如下:由于mathord
第 1 行和第 2 行上的“数学分子”类型array
——例如a_{1,2}x_{2}
——是较不宽比最后一行中的要大 -- 例如a_{m,2}x_{2}
-- 分配4mu
会导致 mathord 和 mathbin 类型的项之间的间距在最后一行看起来还行,但在其他所有行中可能都太宽。选择稍低的值(即1.5pt
)代表了一点妥协,希望空间“平均”看起来还行,即在 的所有行中array
。最后,2.5pt
非常接近5mu
因为我认为在 类型的项周围提供足够的空间很重要mathrel
。
答案2
解决方案的一个例子。如果我们知道方程的结构,它可能会简化。
\documentclass[10pt]{amsart}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\begin{document}
\begin{align*}
\left\{
\begin{array}{c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\;}c@{\;}ccccc}
a_{1,1}x_{1} & + & a_{1,2}x_{2} & + & \cdots & + & a_{1,n}x_{n} & = & b_{1} \\
a_{2,1}x_{1} & + & a_{2,2}x_{2} & + & \cdots & + & a_{2,n}x_{n} & = & b_{2} \\
\vdots & & \vdots & & \ddots & & \vdots & & \vdots \\
a_{m,1}x_{1} & + & a_{m,2}x_{2} & + & \cdots & + & a_{m,n}x_{n} & = & b_{m} \\
\end{array}
\right.
\end{align*}
\end{document}
答案3
另一个解决方案是使用alignat
环境and the
empheq package for the brace. Don't load
amsmath: : empheq loads
mathtools , which loads it. I deleted the
\ddots`,我不明白这个上下文中的含义。+ 号和未知数垂直对齐:
\documentclass[10pt]{amsart}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[overload]{empheq}
\begin{document}
\begin{alignat*}{4}[left = \empheqlbrace]
a_{1,1}&x_{1} + a_{1,2}& & x_{2} +\cdots + a_{1,n}& & x_{n} \mbox{}&=\mbox{} & b_1} \\
a_{2,1}&x_{1} {}+ a_{2,2} & &x_{2} +\cdots + a_{2,n}& & x_{n}& \mbox{}=\mbox{} & b_2} \\[-7pt]
& \vdots & &\vdots & & \vdots & &\vdots \\[-5pt]
a_{m,1}&x_{1}{} + a_{m,2} & & x_{2} +\cdots + a_{m,n}& & x_{n}& \mbox{}= \mbox{} & b_{m}
\end{alignat*}
\end{document}