解密数组环境的代码

解密数组环境的代码

我在这个网站上看到了两个代码,用于在连续方程组中的等号处获得垂直对齐。其中一个使用包systeme\mathrlap命令来获取每个等号右侧的数量。另一个使用array环境。它更麻烦,但我希望更熟悉这个环境。这是代码。

{\settowidth{\widestright}{${}=#1$}
\left\{
\begin{array} {@{}r@{}>{\raggedright\arraybackslash${}}p{\widestright}<{$}@{}}}
{\end{array}
\right.}

(它是作为序言中的一部分实现的\newcommand。我不希望它出现在序言中。所以,我知道我不需要${}=#1$。)我理解该\settowidth命令将长度命令的值设置为文本参数的宽度。除了此代码外,我还没有看到它与一起使用\widestright\settowidth{\widestright}指示 LaTeX 排版是什么意思?什么是

>{\raggedright\arraybackslash${}}p{\widestright}<{$}

在指示 LaTeX 打印的环境中array?具体来说, 、 和 指示 LaTeX 打印的 是什么\arraybackslash\widestright>如何<实现它(或对其进行适当的修改)以在等号处获得对齐?

这是线性方程组的代码。

\documentclass[10pt]{amsart}
\usetikzlibrary{calc,angles,positioning,intersections,quotes,decorations.markings}
\usepackage{mathtools,array}

\usepackage{pgfplots}
\pgfplotsset{compat=1.11}


\begin{document}

\begin{gather*}
\left\{
\begin{array}{@{}c@{}c@{}c@{}c@{}c}
-3x &   {}-{}   &   6y  &   {}={}   &   -15 \\
3x  &   {}+{}   &   4y  &   {}={}   &   6
\end{array}
\right.
, \\
\left\{
\begin{array}{@{}r@{}c@{}l}
-3x - 6y    &   {}={}    &   -15 \\
-2y         &   {}={}    &   -9
\end{array}
\right.
, \\
\left\{
\begin{array}{@{}r@{}c@{}l}
x + 2y  &   {}={}   &   5 \\
y       &   {}={}   &   9/2
\end{array}
\right.
, \\
\left\{
\begin{array}{@{}r@{}c@{}l}
x   &   {}={}   &   -4 \\
y   &   {}={}   &   9/2
\end{array}
\right.
.
\end{gather*}


\end{document}

答案1

以下回答您的疑问:

  • \settowidth接受两个参数。第一个参数是长度(或尺寸)<len>(例如),第二个参数是<something><something>放置在一个可以测量的盒子内,然后将该盒子的宽度分配给长度<len>。所以,

    \settowidth{\widestright}{abc}
    

    将把字符串的宽度分配abc给长度\widestright\widestright最有可能使用来定义\newlength{\widestright}

  • array包裹array在或的列规范方面提供了两个新指令tabular。这些指令的形式为>{<stuff>}<{<stuff>}>用于插入内容一开始每个单元格,而<用于插入内容在最后该特定列中每个单元格的

    >{\raggedright\arraybackslash${}}
    

    \raggedright\arraybackslash${}在每个单元格的开头插入。因此,每个单元格将有一个\raggedright对齐启动了内联数学环境(由于插入了$)。同样,

    <{$}
    

    插入结尾$以关闭 inline-math 环境。请参阅下文\arraybackslash。总而言之,列规范

    >{\raggedright\arraybackslash${}}p{\widestright}<{$}
    

    使得该列中的每个单元格都具有特定的宽度\widestright(因为它使用一p{<len>}列),以 开始\raggedright\arraybackslash${}并以 结束$

    用例是将p-column(通常在文本模式下设置)设为数学模式列。使用 是${}...$为了在以二进制/一元方式使用时具有不同间距的某些运算符之间实现正确的水平对齐(例如-;查看 中的不同${}-x$集合$-x$)。

  • \arraybackslash用于恢复或\\中用于表示新行的 的某些特性。该包定义了它来纠正插入其他对齐属性(如、和)的行为。因此,通常在使用任何上述对齐更改后,应该发出arraytabulararray\raggedright\raggedleft\centering\arraybackslash您已到达该行末尾\\

我可能会按照以下方式设置对齐线性方程组:

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools}

\begin{document}

\begin{align*}
  \raisebox{-.5\height}[0pt][0pt]{$\biggl\{$}
  {-}3x - 6y &= -15 \\
   3x + 4y &= \phantom{-15}\mathllap{6} \\[\jot]
  \raisebox{-.5\height}[0pt][0pt]{$\biggl\{$}
  {-}3x - 6y &= -15 \\
       -2y &= \phantom{-15}\mathllap{-9} \\[\jot]
  \raisebox{-.5\height}[0pt][0pt]{$\biggl\{$}
    \phantom{-3}x + 2y &= \phantom{-15}\mathllap{5} \\
         y &= \phantom{-15}\mathllap{9/2} \\[\jot]
  \raisebox{-.5\height}[0pt][0pt]{$\biggl\{$}
    \phantom{-3}x \phantom{{}+2y} &= \phantom{-15}\mathllap{-4} \\
         y &= \phantom{-15}\mathllap{9/2}
\end{align*}

\end{document}

由于括号不允许跨组,因此需要手动将其放置到位。也可以考虑一组cases

答案2

(重写答案以提供纯粹array的解决方案。)

这是array基于 的方程组排版方法。如您所见,数组的标题与您在帖子中提供的标题略有不同;进行更改是为了简化在环境主体中输入材料的过程array。以下是一些解释:

  • array包已加载,因为它提供了用于设置列类型和影响列间内容的额外工具。

  • 为了将材料排版到等号右侧,R需要定义一种新的列类型,名为(注意使用大写字母),如下所示:

    \newcolumntype{R}{>{\raggedleft\arraybackslash$} p{\mylen} <{$}}
    

    该宏\newcolumntype由包提供array。columnR是 column 的修改形式p,具有以下两个修改:(i) 材料将在数学模式下自动排版;(ii) 材料将设置为右对齐 - 因此是字母R。最后,该指令\arraybackslash重新启用换行命令的通常含义\\。(如果您不提供此指令,您将不得不写\tabularnewline很多次......)

  • 列的宽度R\mylen,其中\mylen在序言中设置为 的宽度$-15$,即等号右边的最宽元素。

  • 每个array标头指定如下:

    {@{} r @{} >{{}}c<{{}} @{} r @{{}={}} R}
    

    这些是什么意思? (i)@{}表示“没有列间空格”; (ii)rR的意思正如您所想; (iii)表示“在列的开头>{{}}c<{{}}插入(类型)并在列的结尾插入”——这样您就不必在主窗口中键入大量的和构造;和表示“在两边插入一个被(空数学原子)包围的符号——这样您就不必在数组主窗口中键入等号。{}c{}{}+{}{}-{}array@{{}={}}={}

  • 使用此设置,输入每个方程组的材料非常简单。例如,第一个方程组输入为

      -3x & - & 6y & -15 \\
       3x & + & 4y & 6      
    

    只有在最后的方程组中才需要大量的\phantoms。

  • 还有两点需要提及:参数\arraystretch设置为 ,1.25以模仿显示的方程式的外观;连续的间距arrays增加了[1ex]。如果需要,请更改这两个选项以满足您的需求。

在此处输入图片描述

\documentclass{amsart} % loads amsmath package, which provides gather* environment
\newlength\mylen
\settowidth\mylen{$-15$} %% use widest element to the right of `=` signs

\usepackage{array}
\newcolumntype{R}{>{\raggedleft\arraybackslash$} p{\mylen} <{$}}

\begin{document}

\renewcommand{\arraystretch}{1.25}

\begin{gather*}
\Bigg\{ 
\begin{array}{@{} r @{} >{{}}c<{{}} @{} r @{{}={}} R}
  -3x & - & 6y & -15 \\
   3x & + & 4y & 6       
\end{array} \\[1ex]
\Bigg\{ 
\begin{array}{@{} r @{} >{{}}c<{{}} @{} r @{{}={}} R}
  -3x & - & 6y & -15 \\
      & - & 2y & -9
\end{array}\\[1ex]
\Bigg\{ 
\begin{array}{@{} r @{} >{{}}c<{{}} @{} r @{{}={}} R}
   \phantom{-3}x & + & 2y & 5 \\
    & &  y & 9/2
\end{array} 
\\[1ex]
\Bigg\{ 
\begin{array}{@{} r @{} >{{}}c<{{}} @{} r @{{}={}} R}
   \phantom{-3}x & \phantom{{}+{}}& & -4 \\
     &  &  \phantom{2}y & 9/2
\end{array}
\end{gather*}
\end{document} 

相关内容