아래 주어진 코드에서 나는 \blkarray
행렬의 대괄호가 Equ (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
이것은 동일한 질문을 다시 묻는 것과 비슷하지만 두 번째 배열이 아닌 첫 번째 배열의 열을 강조 표시하려면 거기에 표시를 하면 됩니다.
아니면 egreg가 나한테 이걸 하길 원해
\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}
of 를 사용하면 및 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}