对齐数组中的数字

对齐数组中的数字

我需要排版包含两个参数(变量)和一个绝对值的列向量。所有系数都可以是整数或小数。我希望实现所有组件都很好地对齐(小数点处的数字(如果有)、变量和运算符)。

数学家协会

\documentclass{article}

\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{siunitx}

\begin{document}

\section{Not aligned}

\subsection{Integer coefficients}

\begin{math}
\begin{pmatrix}
2 - 2 \, s + t \\
28 - 3 \, t \\
-14 - 3 \, s + 4 \, t
\end{pmatrix}
\end{math}

\subsection{Decimal coefficients}

\begin{math}
\begin{pmatrix}
2 - \num{2,3} \, s + t \\
28 - \num{3,1} \, t \\
\num{-14,75} - 3 \, s + 4 \, t
\end{pmatrix}
\end{math}

\section{Manually aligned}

\subsection{Integer coefficients}

\begin{math}
\left(
\begin{array}{rcrcr}
2 & - & 2 \, s & + & t \\
28 & & & - & 3 \, t \\
-14 & - & 3 \, s & + & 4 \, t
\end{array}
\right)
\end{math}

\subsection{Decimal coefficients}

\begin{math}
\left(
\begin{array}{rcrcr}
2 & - & \num{2,3} \, s & + & t \\
28 & & & - & \num{3,1} \, t \\
\num{-14,75} & - & 3 \, s & + & 4 \, t
\end{array}
\right)
\end{math}

\end{document}

产生以下结果。

MWE 的输出

第 2 节中的两个示例中,运算符前后的间距都太大。第 2.2 节中的数字小数点未对齐。

(1)我该如何解决这些问题?

(2)是否有任何包可以自动完成这项工作,而无需手动放置&字符?

答案1

环境的列规范array不限于clr

\documentclass{article}

\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{siunitx}

\begin{document}

\begin{math}
\left(
\begin{array}{
  @{\,}
  S[table-format=-2.2]
  @{\>}c@{\>}
  S[table-format=1.1]
  @{\,}c@{\>}c@{\>}
  S[table-format=1.1]
  @{\,}c
  @{\,}
}
2 & - & 2,3 & s & + & & t \\
28 & & & & - & 3,1 & t \\
-14,75 & - & 3 & s & + & 4 & t
\end{array}
\right)
\end{math}

\end{document}

结果

然而,我怀疑垂直对齐有点过度,简单的非对齐版本就足够了。

答案2

如果您不介意小数系数不在小数点逗号上对齐,该systeme包会为您提供一个简单而简短的代码:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{siunitx}
\usepackage{systeme}

\begin{document}

\subsection*{Integer coefficients}

\begin{math}
\sysdelim()\systeme{2-2s + t, 28-3t, -14-3s + 4t}
\end{math}

\subsection*{Decimal coefficients}

\begin{math}
\sisetup{ copy-decimal-marker}
\sysdelim()\systeme{\num{2} - \num{2,3}s + t,\num{28} - \num{3,1}t, -\num{14,75} - 3s + 4t}
\end{math}

\end{document} 

在此处输入图片描述

答案3

另外两个array基于 的解决方案:第一个是简单的数字右对齐,第二个是数字小数对齐。

在此处输入图片描述

\documentclass{article}
\usepackage{array}
\newcolumntype{C}{>{{}}c<{{}}}
\usepackage{siunitx}
\newcolumntype{T}[1]{S[table-format=#1]}
\begin{document}
\[
\setlength\arraycolsep{0pt}
\left(\begin{array}{r C r C r}
  2    & - & 2.3s & + &     t \\
 28    &   &      & - & 3.1 t \\
-14.75 & - &   3s & + & 4   t
\end{array}\right)
\]

\[
\setlength\arraycolsep{0pt}
\left(\begin{array}{T{-2.2} C T{1.1}r C T{1.1}r}
  2    & - & 2.3 & s & + &     & t \\
 28    &   &     &   & - & 3.1 & t \\
-14.75 & - & 3   & s & + & 4   & t
\end{array}\right)
\]
\end{document} 

相关内容