Hallo liebe LaTeX-Freunde,

ich möchte die einzelnen Schritte vom Gauß Algorithmus visualisieren. Das funktioniert wunderbar mit dem gauss Paket. Doch wenn ich eine variable Anzahl von Operationen mittels diagonalen Punkten zwischen den Pfeilen rechts neben der Matrix darstellen möchte stoße ich auf meine Grenzen. Hier mal mein Minimalbeispiel:

Open in Online-Editor
\documentclass[preview]{standalone}
\usepackage{gauss}
\begin{document}
    \begin{align*}
    \begin{gmatrix}[p]
    1       & \mathsf{x}    & \mathsf{x}        & \cdots    & \mathsf{x}    \\
    \mathsf{x}      & 1     & \mathsf{x}        &           & \vdots\\
    \mathsf{x}      & \mathsf{x}    & \ddots    & \ddots    &       \\
    \vdots  &       & \ddots    &           & \mathsf{x}    \\
    \mathsf{x}      & \cdots&           & \mathsf{x}        & 1
    \rowops
    \add[-1]{0}{1}
    \add[-1]{0}{2}  
    $\ddots$            
    \add[-1]{0}{4}
    \end{gmatrix}
    \end{align*} 
\end{document}

alt text

Hier sollten nun die diagonalen Punkte zwischen den Pfeilen in etwa zwischen dem 2. und dem 3. + Zeichen auftauchen. Ich hoffe das war einigermaßen verständlich und mir kann Jemand weiter helfen!

Edit: Dank der Antwort von sapotello ist obiges Problem gelöst. Bei der Anwendung der Lösung auf die Spaltenoperationen stoße ich nun jedoch auf das Problem, dass die diagonalen Punkte sich nicht richtig in vertikaler Richtung positionieren lassen. Mein Minimalbsp. hierzu:

Open in Online-Editor
\documentclass[preview]{standalone}
\usepackage{mathdots}
\usepackage{gauss}
\newcommand*{\dmultlabel}[2]{%
    \begingroup
    \renewcommand*\colmultlabel[1]{##1}%
    \mult{#1}{#2}%
    \endgroup
}
\begin{document}
    \begin{align*}
    \begin{gmatrix}[p]
    1       & \mathsf{x}    & \mathsf{x}        & \cdots    & \mathsf{x}    \\
    \mathsf{x}      & 1     & \mathsf{x}        &           & \vdots\\
    \mathsf{x}      & \mathsf{x}    & \ddots    & \ddots    &       \\
    \vdots  &       & \ddots    &           & \mathsf{x}    \\
    \mathsf{x}      & \cdots&           & \mathsf{x}        & 1
    \colops
    \add[-1]{0}{1}
    \add[-1]{0}{2}  
    \dmultlabel{3}{\vspace{5em}\iddots}     
    \add[-1]{0}{4}
    \end{gmatrix}
    \end{align*} 
\end{document}

alt text

gefragt 25 Apr '15, 17:21

Ross's gravatar image

Ross
37591522
Akzeptiert-Rate: 100%

bearbeitet 26 Apr '15, 15:43

Normalerweise hätte ich sogar einen Feature-Request dafür vorgeschlagen. Allerdings konnte ich keine E-Mail-Adresse des Autors finden. Außerdem scheint die letzte Paketversion von 2003 zu sein und die am Anfang der Paketdatei vermerkten Todo-Einträge bisher nicht umgesetzt zu sein. Falls Du aber eine E-Mail-Adresse des Autors findest, soll Dich das keinesfalls abhalten.

(25 Apr '15, 18:19) saputello

Ganz auf die Schnelle, könnte man das mit etwas Trickserei beispielsweise durch umdefinieren des Labels für \mult lösen:

Open in Online-Editor
\documentclass[preview]{standalone}
\usepackage{gauss}
\newcommand*{\dmultlabel}[2]{%
  \begingroup
    \renewcommand*\rowmultlabel[1]{##1}%
    \mult{#1}{#2}%
  \endgroup
}
\begin{document}
    \begin{align*}
    \begin{gmatrix}[p]
    1       & \mathsf{x}    & \mathsf{x}        & \cdots    & \mathsf{x}    \\
    \mathsf{x}      & 1     & \mathsf{x}        &           & \vdots\\
    \mathsf{x}      & \mathsf{x}    & \ddots    & \ddots    &       \\
    \vdots  &       & \ddots    &           & \mathsf{x}    \\
    \mathsf{x}      & \cdots&           & \mathsf{x}        & 1
    \rowops
    \add[-1]{0}{1}
    \add[-1]{0}{2}
    \dmultlabel{3}{\hspace{5em}\ddots}% oder \dmultlabel{3}{\hspace{5em}\ddots\enskip}     
    \add[-1]{0}{4}
    \end{gmatrix}
    \end{align*} 
\end{document}

Pünktchen eingefügt bzw. mit der auskommentierten Alternative

Das zweite Bild zeigt dabei die auskommentierte Alternative.

Zugegeben dabei ist nicht gerade schön, dass man letztlich die horizontale Positionierung der Punkte von Hand machen mussen und auch die vertikale Positionierung einfach darüber erledigt, dass man die Zeile in der Mitte zwischen den beiden Endzeilen von \add verwendet. Aber als Notlösung ist es immerhin verwendbar.

Etwas schöner wird es, wenn der Abstand ein zusätzliches Argument wird. Hier gleich mit einer Variante für die Spaltenmarkierungen:

Open in Online-Editor
\documentclass[preview]{standalone}
\usepackage{mathdots}
\usepackage{gauss}
\newcommand*{\dcmultlabel}[3]{%
    \begingroup
    \renewcommand*\colmultlabel[1]{##1\rule[-#2\normalbaselineskip]{0pt}{#2\normalbaselineskip}}%
    \mult{#1}{#3}%
    \endgroup
}
\newcommand*{\drmultlabel}[3]{%
    \begingroup
    \renewcommand*\rowmultlabel[1]{\hspace{#2em}##1}%
    \mult{#1}{#3}%
    \endgroup
}
\begin{document}
    \begin{align*}
    \begin{gmatrix}[p]
    1       & \mathsf{x}    & \mathsf{x}        & \cdots    & \mathsf{x}    \\
    \mathsf{x}      & 1     & \mathsf{x}        &           & \vdots\\
    \mathsf{x}      & \mathsf{x}    & \ddots    & \ddots    &       \\
    \vdots  &       & \ddots    &           & \mathsf{x}    \\
    \mathsf{x}      & \cdots&           & \mathsf{x}        & 1
    \rowops
    \add[-1]{0}{1}
    \add[-1]{0}{2}
    \drmultlabel{3}{5}{\ddots}     
    \add[-1]{0}{4}
    \colops
    \add[-1]{0}{1}
    \add[-1]{0}{2}  
    \dcmultlabel{3}{3}{\iddots}
    \add[-1]{0}{4}
    \end{gmatrix}
    \end{align*} 
\end{document}

Spalten und Zeilen

Permanenter link

beantwortet 25 Apr '15, 18:05

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 26 Apr '15, 16:38

Danke für deine schnelle Lösung! Wäre noch schön, wenn man das Ganze etwas Platz sparender gestalten könnte, sprich die Pfeile rechts etwas näher an die Matrix rücken und evt. etwas im Horizontalen verkürzen aber das sind wohl nur noch Feinheiten.

(26 Apr '15, 13:15) Ross

Funktioniert leider bei den Reihenoperationen so nicht. Zumindest nicht mit \vspace.

(26 Apr '15, 13:48) Ross

@Ross: Näher geht, indem man den Abstand geringer wählt. Platz brauchen die Pfeile aber immer. Reihenoperationen finde ich in der Frage nicht. Ich weiß auch nicht, was Du da konkret ausprobiert hast. Wenn Du wissen willst, wie man das für Reihenoperationen machen kann, dann frag es!

BTW: Wenn das Ganze zunehmen komplex wird, würde ich mit mal tikz und dort speziell die Matrix anschauen.

(26 Apr '15, 14:12) saputello

@Ross: Ich hatte zwar darauf abgezielt, dass Du die neue Frage auch wirklich als neue Frage stellst (mit Link auf diese Frage), weil das deutlich übersichtlicher wäre, aber meinetwegen.

(26 Apr '15, 16:39) saputello
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×58
×5
×3
×1
×1

gestellte Frage: 25 Apr '15, 17:21

Frage wurde gesehen: 10,838 Mal

zuletzt geändert: 26 Apr '15, 16:39