
가우스 소거를 위한 매크로를 갖고 싶지만 가우스 패키지 표기가 마음에 들지 않습니다. 좋은 매크로를 발견했습니다여기, 하지만 한 줄에 여러 단계를 포함하고 싶습니다. \\만 제거하면 보기에 좋지 않습니다. 행렬과 행 연산 사이의 공백이 같지 않고 줄이 줄 바꿈되지 않습니다.
또한 행렬과 행 연산 사이의 공백을 줄이고 싶습니다. 그렇게하는 방법?
원천:
\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\allowdisplaybreaks
\makeatletter
\newcounter{elimination@steps}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash$}p{#1}<{$}}
\def\elimination@num@rights{}
\def\elimination@num@variables{}
\def\elimination@col@width{}
\newenvironment{elimination}[4][0]
{
\setcounter{elimination@steps}{0}
\def\elimination@num@rights{#1}
\def\elimination@num@variables{#2}
\def\elimination@col@width{#3}
\renewcommand{\arraystretch}{#4}
\start@align\@ne\st@rredtrue\m@ne
}
{
\endalign
\ignorespacesafterend
}
\newcommand{\eliminationstep}[2]
{
\ifnum\value{elimination@steps}>0\sim\quad\fi
\left[
\ifnum\elimination@num@rights>0
\begin{array}
{@{}*{\elimination@num@variables}{R{\elimination@col@width}}
|@{}*{\elimination@num@rights}{R{\elimination@col@width}}}
\else
\begin{array}
{@{}*{\elimination@num@variables}{R{\elimination@col@width}}}
\fi
#1
\end{array}
\right]
&
\begin{array}{l}
#2
\end{array}
\addtocounter{elimination@steps}{1}
}
\makeatother
\begin{document}
\begin{elimination}[3]{3}{1.75em}{1.1}
\eliminationstep
{
4 & -8 & 5 & 1 & 0 & 0 \\
4 & -7 & 4 & 0 & 1 & 0 \\
3 & -4 & 2 & 0 & 0 & 1
}
{
\\
-R_{1} \\
-\frac{3}{4} R_{1}
}
\eliminationstep
{
4 & -8 & 5 & 1 & 0 & 0 \\
0 & 1 & -1 & -1 & 1 & 0 \\
0 & 2 & -\frac{7}{4} & -\frac{3}{4} & 0 & 1
}
{
\\
\\
-2R_{2} \\
}
\eliminationstep
{
4 & -8 & 5 & 1 & 0 & 0 \\
0 & 1 & -1 & -1 & 1 & 0 \\
0 & 0 & \frac{1}{4} & \frac{5}{4} & -2 & 1
}
{
\\
\\
+2R_{2} \\
}
\end{elimination}
\end{document}
답변1
둘 이상의 &를 정렬하면 여러 방정식을 합친다고 가정하므로 다른 모든 &는 \hfil처럼 확장됩니다. 단계당 2&s가 필요합니다.
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{mathtools}
\usepackage{array}
\makeatletter
\newcounter{elimination@steps}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash$}p{#1}<{$}}
\def\elimination@num@rights{}
\def\elimination@num@variables{}
\def\elimination@col@width{}
\newenvironment{elimination}[4][0]
{
\setcounter{elimination@steps}{0}
\def\elimination@num@rights{#1}
\def\elimination@num@variables{#2}
\def\elimination@col@width{#3}
\renewcommand{\arraystretch}{#4}
\start@align\@ne\st@rredtrue\m@ne
}
{
\endalign
\ignorespacesafterend
}
\newcommand{\eliminationstep}[2]
{
\ifnum\value{elimination@steps}>0\sim\quad\fi
\left[
\ifnum\elimination@num@rights>0
\begin{array}
{@{}*{\elimination@num@variables}{R{\elimination@col@width}}
|@{}*{\elimination@num@rights}{R{\elimination@col@width}}}
\else
\begin{array}
{@{}*{\elimination@num@variables}{R{\elimination@col@width}}}
\fi
#1
\end{array}
\right]
&
\begin{array}{l}
#2
\end{array}
&% moved second & here
\addtocounter{elimination@steps}{1}
}
\makeatother
\begin{document}
\begin{elimination}[3]{3}{1.1em}{1.1}% Decreased from 1.75em
\eliminationstep
{
4 & -8 & 5 & 1 & 0 & 0 \\
4 & -7 & 4 & 0 & 1 & 0 \\
3 & -4 & 2 & 0 & 0 & 1
}
{
\\
-R_{1} \\
-\frac{3}{4} R_{1}
}
\eliminationstep
{
4 & -8 & 5 & 1 & 0 & 0 \\
0 & 1 & -1 & -1 & 1 & 0 \\
0 & 2 & -\frac{7}{4} & -\frac{3}{4} & 0 & 1
}
{
\\
\\
-2R_{2}
}
\\[10pt]% increased spacing between rows
\eliminationstep
{
4 & -8 & 5 & 1 & 0 & 0 \\
0 & 1 & -1 & -1 & 1 & 0 \\
0 & 0 & \frac{1}{4} & \frac{5}{4} & -2 & 1
}
{
\\
\\
+2R_{2}
}
\end{elimination}
\end{document}