在数组环境中使用 `\left\{` 的问题

在数组环境中使用 `\left\{` 的问题

我试图通过将矩阵的条目括在框中来定义分段矩阵,并使用开括号和闭括号标记这些段。到目前为止,我已经开发了以下代码来执行此操作。

\documentclass[a4,12pt]{report}

\usepackage{multirow}

\begin{document}

\[
  A =
    \left(
      \begin{array}{rrrrrl}
          \cline{2-4} \cline{5-5}
        \multirow{2}{*}{$B \{$} &
          \multicolumn{1}{|r}{1} & 2 & \multicolumn{1}{r|}{-4} & \multicolumn{1}{|r|}{1} & \multirow{2}{*}{$\} \hat{\mathbf{b}}^{T}$} \\
          & \multicolumn{1}{|r}{2} & -5 & \multicolumn{1}{r|}{-3} & \multicolumn{1}{|r|}{-3} & \\
          \cline{2-4} \cline{5-5}
        \hat{\mathbf{c}} \{  & \multicolumn{1}{|r}{-6} & -3 & \multicolumn{1}{r|}{0} & \multicolumn{1}{|r|}{5} & \} a_{n-1,n} \\
          \cline{2-4} \cline{5-5}
        \hat{\mathbf{d}} \{ & \multicolumn{1}{|r}{-6} &  7 & \multicolumn{1}{r|}{0} & \multicolumn{1}{|r|}{-8} & \} a_{n,n} \\
          \cline{2-4} \cline{5-5}
      \end{array}
    \right)
\]


\end{document}

这将产生以下输出:

在此处输入图片描述

我想要做的是扩展第一列和最后一列的左括号和右括号,使其与已分段的行对齐。执行此操作的一种方法是使用\left\{\right\}LaTeX 命令。问题是,当我执行此操作时,我收到以下 LaTeX 错误:

! Missing \right.  inserted.
<inserted text>
                \right .
l.12         \multirow{2}{*}{$B \left\{$}
                                          &
?

另外,我想做的是使用单独的框来分隔各个部分,而不是像上面那样使用相邻的框。任何关于如何做到这一点的想法都将不胜感激。

答案1

我采纳了@mico 的回答并补充道hhline

在此处输入图片描述

\documentclass[a4paper,12pt]{report}
\usepackage{multirow,hhline}
\begin{document}
  \[
  A =
  \left(
  \begin{array}{r|rrr||r|l}
    \hhline{~|---||-|~}
    \multirow{2}{*}{$B \bigg\{$} 
    & 1 & 2 & -4 & 1 & 
    \multirow{2}{*}{$\bigg\} \hat{\mathbf{b}}^{T}$} \\
    & 2 & -5 & -3 & -3 & \\
    \hhline{~:===::=:~}
    \hat{\mathbf{c}} \{  & -6 & -3 & 0 & 5 & \} a_{n-1,n} \\
    \hhline{~:===::=:~}
    \hat{\mathbf{d}} \{ & -6 &  7 & 0 & -8 & \} a_{n,n} \\
    \hhline{~|---||-|~}
  \end{array}
  \right)
  \]
\end{document}

答案2

这是一个使用经过验证的\tikzmark想法的解决方案,首先在 Andrew Stacey 的回答中展示

在正文旁边添加大括号

在此处输入图片描述

下面的代码使用了 Peter Grill 的回答修改后的版本

在 itemize 环境中将一些项目放在框内

我的解决方案有点麻烦 - 需要手动调整列和行的间距,以及一些用法,\vphantom这样\bigg你就可以使用而不是使用\left\{...\right.,但输出(我希望)相当令人满意。

\documentclass[a4,12pt]{report}

\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{multirow}

\newcommand{\DrawBox}[3][]{%
    \tikz[overlay,remember picture]{
        \coordinate (RightPoint) at (#3.east);
    \draw[red,#1]
      ($(#2)+(-.5em,.9em)$) rectangle
      ($(RightPoint)+(0.2em,-0.3em)$);}
}

\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}

\begin{document}

\[
  A =
    \left(
    \begin{array}{r@{\hspace{.2cm}}c@{}rrr@{\hspace{.5cm}}r@{}rl}
       \multirow{2}{*}{$B \left\{\vphantom{\begin{array}{c}1\\2\end{array}}\right.$} 
                                &\tikzmark{left1}   & 1   & 2  & -4                     &\tikzmark{left3}   & 1  & 
                                \multirow{2}{*}{$\left.\vphantom{\begin{array}{c}1\\2\end{array}}\right\} \hat{\mathbf{b}}^{T}$} \\
                                &                   & 2   & -5 & -3\tikzmark{right1}    &                   &-3 \tikzmark{right3}   & \\[5pt]
        \hat{\mathbf{c}} \{     &\tikzmark{left2}   & -6  & -3 & 0 \tikzmark{right2}    &\tikzmark{left4}   & 5  \tikzmark{right4}  &\}a_{n-1,n} \\[5pt]
        \hat{\mathbf{d}} \{     &\tikzmark{left5}   & -6  &  7 & 0 \tikzmark{right5}    &\tikzmark{left6}   & -8 \tikzmark{right6}  & \} a_{n,n} \\
      \end{array}
    \right)
\]

\DrawBox[thick,green,fill=yellow,fill opacity=0.1]{left1}{right1}
\DrawBox[thick,blue]{left2}{right2}
\DrawBox[thick,red]{left3}{right3}
\DrawBox[thick,purple]{left4}{right4}
\DrawBox[thick,yellow]{left5}{right5}
\DrawBox[thick,orange]{left6}{right6}

\end{document}

答案3

您可以使用显式大小语句\bigg来设置左花括号和右花括号的大小,如以下修改后的 MWE 形式所示。为了在使用命令时使数组显示时留有一点间隙\cline,必须将它们分成两个单独的我还简化了代码以摆脱大多数语句\multicolumn并合并各种成对的\cline语句。

\documentclass[a4paper,12pt]{report}
\usepackage{multirow}
\begin{document}      
  \[
  A =
  \left(
  \begin{array}{r|rrr|}
    \cline{2-4} 
    \multirow{2}{*}{$B \bigg\{$} 
    & 1 &  2 & -4  \\ 
    & 2 & -5 & -3 \\
    \cline{2-4} 
    \hat{\mathbf{c}} \{  & -6 & -3 & 0 \\
    \cline{2-4}
    \hat{\mathbf{d}} \{  & -6 &  7 & 0 \\
    \cline{2-4} 
  \end{array}
  \right. \kern-3pt \left. % use \kern-3pt to reduce distance between arrays
  \begin{array}{|r|l}
    \cline{1-1}
     1 & \multirow{2}{*}{$\bigg\} \hat{\mathbf{b}}^{T}$} \\
    -3 & \\
    \cline{1-1}
     5 & \} a_{n-1,n} \\
    \cline{1-1}
    -8 & \} a_{n,n} \vphantom{\hat{\mathbf{d}}}\\  
        % the \vphantom is needed to equalize the heights of the 
        % third rows across the two arrays
    \cline{1-1}
  \end{array}
  \right)
  \]
\end{document}

在此处输入图片描述

相关内容