Ich muss einige erweiterte Matrizen setzen, aber einige davon enthalten Brüche. Ich muss das auch mit tun gmatrix
, da ich dessen Funktionen benötige.
Um die Zeile zwischen den Einträgen zu erstellen, wird folgender Code verwendet:
\newcommand{\mline}{%
\hspace{-\arraycolsep}%
\strut\vrule
\hspace{-\arraycolsep}%
}
Damit kann ich so etwas erstellen:
Code:
\begin{align}
\begin{gmatrix}[p]
1 & 2 & 3 & \mline & 40 \\
2 & 3 & 4 & \mline & 500 \\
3 & 4 & 5 & \mline & 6000
\end{gmatrix}
\end{align}
Wenn es jedoch Brüche enthält, sieht es eher so aus:
Code:
\begin{align}
\begin{gmatrix}[p]
1 & 2 & \frac{1}{3} & \mline & 40 \\
2 & 3 & \frac{1}{4} & \mline & 500 \\
3 & 4 & 5 & \mline & \frac{1}{6}
\end{gmatrix}
\end{align}
Die Linie wird irgendwie gestrichelt, was nicht wirklich funktioniert. Es sieht auch unästhetisch aus, dass sich die Brüche fast berühren.
Ich hoffe, Sie können mir helfen.
Antwort1
Ich kann Ihnen eine manuelle Lösung anbieten:
\documentclass{article}
\usepackage{amsmath}
\usepackage{gauss}
% patch gauss macros for doing their work in `align'
% and other amsmath environments; see
% http://tex.stackexchange.com/questions/146532/
\usepackage{etoolbox}
\makeatletter
\patchcmd\g@matrix
{\vbox\bgroup}
{\vbox\bgroup\normalbaselines}% restore the standard baselineskip
{}{}
\makeatother
\newcommand{\mline}[1][0pt]{%
\hspace{-\arraycolsep}%
\ifdim#1>0pt
\dimen0=\ht\strutbox \dimen2=\dimen0
\advance\dimen0 #1\relax
\ht\strutbox=\dimen0
\fi
\smash{\strut\vrule} % the `\vrule` is as high and deep as a strut
% since assignments to \ht\strutbox are global, we restore the height
\ifdim#1>0pt
\ht\strutbox=\dimen2
\fi
\hspace{-\arraycolsep}%
}
\begin{document}
\[
\begin{gmatrix}[p]
1 & 2 & \mline & 3 \\
4 & 5 & \mline & 6 \\
7 & 8 & \mline[2pt] & \frac{1}{6}
\rowops
\swap{0}{1}
\mult{0}{\cdot 7}
\add[5]{1}{2}
\end{gmatrix}
\]
\end{document}
Für widersprüchliche Brüche verwenden Sie ein neues \gfrac
Makro
\documentclass{article}
\usepackage{amsmath}
\usepackage{gauss}
% patch gauss macros for doing their work in `align'
% and other amsmath environments; see
% http://tex.stackexchange.com/questions/146532/
\usepackage{etoolbox}
\makeatletter
\patchcmd\g@matrix
{\vbox\bgroup}
{\vbox\bgroup\normalbaselines}% restore the standard baselineskip
{}{}
\makeatother
\newcommand{\gfrac}[2]{\frac{\smash[b]{\mathstrut}#1}{\smash[t]{\mathstrut}#2}}
\newcommand{\BAR}[1][0pt]{%
\hspace{-\arraycolsep}%
\ifdim#1>0pt
\dimen0=\ht\strutbox \dimen2=\dimen0
\advance\dimen0 #1\relax
\ht\strutbox=\dimen0
\fi
\smash{\strut\vrule} % the `\vrule` is as high and deep as a strut
% since assignments to \ht\strutbox are global, we restore the height
\ifdim#1>0pt
\ht\strutbox=\dimen2
\fi
\hspace{-\arraycolsep}%
}
\begin{document}
\[
\begin{gmatrix}[p]
1 & \gfrac{1}{3} & \BAR & 3 \\
4 & \gfrac{1}{4} & \BAR[4pt] & 6 \\
7 & 8 & \BAR[2pt] & \frac{1}{6}
\rowops
\swap{0}{1}
\mult{0}{\cdot 7}
\add[5]{1}{2}
\end{gmatrix}
\]
\end{document}
Ich empfehle jedoch, für Brüche die Schrägstrichform zu verwenden.
Antwort2
Verwenden Sie einfach ein normales array
:
\documentclass{article}
\begin{document}
\[
\left(\begin{array}{@{} r r r | r @{}}
1 & 2 & 3 & 40 \\
2 & 3 & 4 & 500 \\
3 & 4 & 5 & 6000
\end{array}\right)
\qquad
\renewcommand{\arraystretch}{1.2}% http://tex.stackexchange.com/a/31704/5764
\left(\begin{array}{@{} r r r | r @{}}
1 & 2 & \frac{1}{3} & 40 \\
2 & 3 & \frac{1}{4} & 500 \\
3 & 4 & 5 & \frac{1}{6}
\end{array}\right)
\]
\end{document}
Ja, Sie müssen die Spaltenspezifikation angeben, haben jedoch Kontrolle über die Ausrichtung und können die Standard- |
Spaltenregel verwenden, die sich vertikal ohne Lücken erstreckt.