blkarray の括弧を修正

blkarray の括弧を修正

下記のコードでは、\blkarray行列の括弧を式(1)で与えられた元の行列の括弧と一致させたいと考えました。

ここに画像の説明を入力してください

問題は、 を使用すると\blkarray、括弧が短すぎて、元のマトリックスほどエレガントに見えないことです。これを修正できますか? ありがとうございます。

これは、cfr:

\documentclass[11pt]{book}

\usepackage{amsmath,amsfonts,amssymb,amsthm}
\usepackage{xcolor}
\definecolor{ocre}{RGB}{0,173,239}

\usepackage{blkarray}

\makeatletter
\renewcommand*\env@matrix[1][*\c@MaxMatrixCols c]{%
  \hskip -\arraycolsep
  \let\@ifnextchar\new@ifnextchar
  \array{#1}}
\makeatother

\usepackage{tikz}

\usetikzlibrary{arrows,matrix,positioning,fit,arrows.meta,}
\tikzset{%
  highlight/.style={rectangle,rounded corners,fill=ocre!50,draw,
    fill opacity=0.5,thick,inner sep=0pt}
}
\newcommand{\tikzmark}[2]{\tikz[overlay,remember picture,
  baseline=(#1.base)] \node (#1) {#2};}
%
\newcommand{\Highlight}[1][submatrix]{%
    \tikz[overlay,remember picture]{
    \node[highlight,fit=(left.north west) (right.south east)] (#1) {};}
}
\newcommand{\mytikzmark}[2]{\tikz[overlay,remember picture, baseline=(#1.base)] \node (#1) {#2};}
\begin{document}

Original Matrix:

\begin{equation}
\begin{bmatrix}[cccc|c]
  1 & 0 & -1 & 0 & 0 \\
  0 & 1 & 2 & 0 & 0 \\
  0 & 0 & 0 & 1 & 0
\end{bmatrix}\\
\end{equation}

Updated Matrix:

\begin{equation}
  \begin{blockarray}{ccccc}
    x_{1} & x_{2} & x_{3} & x_{4} &  \\
    \begin{block}{[cccc|c]}
      1 & 0 & \mytikzmark{left}{-1} & 0 & 0 \\
      0 & 1 & 2 & 0 & 0 \\
      0 & 0 & \mytikzmark{right}{0} & 1 & 0 \\
    \end{block}
  \end{blockarray}
  \Highlight[new1]
\end{equation}
\tikz[remember picture,overlay]{%
  \draw [LaTeX-] (new1.south) ++(0,-2.5pt) [out=-90,in=160] to ++(5mm,-10mm) node [right, xshift=-2.5mm, font=\itshape, text=red, align=center] {free\\variable};
}

\end{document} 

答え1

\bbordermatrixから使うかもしれません\bordermatrix の括弧 ( ) の代わりに角括弧 [ ] を使用する

\documentclass{article}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{etoolbox}

\usetikzlibrary{arrows,matrix,positioning,fit,arrows.meta,}

\definecolor{ocre}{RGB}{0,173,239}

\tikzset{%
  highlight/.style={rectangle,rounded corners,fill=ocre!50,draw,
    fill opacity=0.5,thick,inner sep=0pt}
}
\newcommand{\tikzmark}[2]{\tikz[overlay,remember picture,
  baseline=(#1.base)] \node (#1) {#2};}
%
\newcommand{\Highlight}[1][submatrix]{%
    \tikz[overlay,remember picture]{
    \node[highlight,fit=(left.north west) (right.south east)] (#1) {};}
}
\newcommand{\mytikzmark}[2]{\tikz[overlay,remember picture, baseline=(#1.base)] \node (#1) {#2};}

\let\bbordermatrix\bordermatrix
\patchcmd{\bbordermatrix}{8.75}{4.75}{}{}
\patchcmd{\bbordermatrix}{\left(}{\left[}{}{}
\patchcmd{\bbordermatrix}{\right)}{\right]}{}{}

\newcommand{\wall}[2]{%
  \smash{%
    \vrule height \dimexpr\ht\strutbox+#1 depth \dimexpr\dp\strutbox+#2\relax
  }%
}

\begin{document}
\begin{equation}
\bbordermatrix{
 & x_{1} & x_{2} & x_{3}                 & x_{4} &                 &   \cr
 & 1     & 0     & \mytikzmark{left}{-1} & 0     & \wall{0pt}{3pt} & 0 \cr
 & 0     & 1     & 2                     & 0     & \wall{3pt}{3pt} & 0 \cr
 & 0     & 0     & \mytikzmark{right}{0} & 1     & \wall{3pt}{0pt} & 0 \cr
}
\Highlight[new1]
\end{equation}
\tikz[remember picture,overlay]{%
  \draw [LaTeX-] (new1.south) ++(0,-2.5pt) [out=-90,in=160] to ++(5mm,-10mm) node [right, xshift=-2.5mm, font=\itshape, text=red, align=center] {free\\variable};
}

\end{document}

ここに画像の説明を入力してください

答え2

これは同じ質問を繰り返すのに近いですが、2 番目の配列ではなく最初の配列の列を強調表示したい場合は、そこにマークを付けてください。

ここに画像の説明を入力してください

あるいはエグレは私にこれをやらせたい

ここに画像の説明を入力してください

\documentclass[11pt]{book}


\documentclass[11pt]{book}

\usepackage{amsmath,amsfonts,amssymb,amsthm}
\usepackage{xcolor}
\definecolor{ocre}{RGB}{0,173,239}

\usepackage{blkarray}

\makeatletter
\renewcommand*\env@matrix[1][*\c@MaxMatrixCols c]{%
  \hskip -\arraycolsep
  \let\@ifnextchar\new@ifnextchar
  \array{#1}}
\makeatother

\usepackage{tikz}

\usetikzlibrary{arrows,matrix,positioning,fit,arrows.meta,}
\tikzset{%
  highlight/.style={rectangle,rounded corners,fill=ocre!50,draw,
    fill opacity=0.5,thick,inner sep=0pt}
}
\newcommand{\tikzmark}[2]{\tikz[overlay,remember picture,
  baseline=(#1.base)] \node (#1) {#2};}
%
\newcommand{\Highlight}[1][submatrix]{%
    \tikz[overlay,remember picture]{
    \node[highlight,fit=(left.north west) (right.south east)] (#1) {};}
}
\newcommand{\mytikzmark}[2]{\tikz[overlay,remember picture, baseline=(#1.base)] \node (#1) {#2};}
\begin{document}

Original Matrix:



\bigskip
\begin{equation}
\begin{bmatrix}[cccc|c]
\noalign{\vskip-1.5\normalbaselineskip}
  x_{1} & x_{2} & x_{3} &\multicolumn{1}{c}{ x_{4}} &  \\
\noalign{\vskip.5\normalbaselineskip}
  1 & 0 & \mytikzmark{left}{-1} & 0 & 0 \\
  0 & 1 & 2 & 0 & 0 \\
  0 & 0 & \mytikzmark{right}{0} & 1 & 0
\end{bmatrix}\\
\end{equation}

  \Highlight[new1]

\tikz[remember picture,overlay]{%
  \draw [LaTeX-] (new1.south) ++(0,-2.5pt) [out=-90,in=160] to ++(5mm,-10mm) node [right, xshift=-2.5mm, font=\itshape, text=red, align=center] {free\\variable};
}

\end{document} 

答え3

{bNiceArray}を使用すると、およびnicematrixと同じ括弧を使用できます。環境には、マトリックスの上にラベルの行を追加するためのキーがあります。{array}{bmatrix}{bNiceArray}first-row

\documentclass[11pt]{book}
\usepackage{xcolor}
\definecolor{ocre}{RGB}{0,173,239}

\usepackage{nicematrix}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta}

\begin{document}

Original Matrix:

\begin{equation}
\left[\begin{array}{@{}cccc|c@{}}
  1 & 0 & -1 & 0 & 0 \\
  0 & 1 & 2 & 0 & 0 \\
  0 & 0 & 0 & 1 & 0
\end{array}\right]
\end{equation}

Updated Matrix:

\begin{equation}
\begin{bNiceArray}{cccc|c}[first-row]
  x_1 & x_2 & x_3 & x_4 \\
    1 & 0 & \Block[draw,fill=ocre!50,rounded-corners]{3-1}{}
            -1 & 0 & 0 \\
    0 & 1 & 2 & 0 & 0 \\
    0 & 0 & 0 & 1 & 0 \\
\CodeAfter
  \tikz \draw [LaTeX-] (3-3.south) ++(0,-4.5pt) [out=-90,in=160] to ++(5mm,-10mm) 
          node [right, xshift=-2.5mm, font=\itshape, text=red, align=center] {free\\variable};
\end{bNiceArray}
\end{equation}

\end{document} 

上記コードの出力

関連情報