Ich würde gerne ein mit Tikz erstelltes Bild innerhalb einer Gleichung als Zwischenschritt verarbeiten.

Minimalbeispiel:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\[\det(A)=\begin{vmatrix} a & b \\ c & d \end{vmatrix}=\ldots=ad-bc.\]
   \begin{tikzpicture}
     \matrix [%
       matrix of math nodes,
       column sep=1em,
       row sep=1em
     ] (2x2) {%
       a_{11} & a_{12} \\
       a_{21} & a_{22} \\
     };

           \path[->,blue] (2x2-1-1) edge (2x2-2-2);
           \path[->,red] (2x2-2-1) edge (2x2-1-2);

     \node[blue] at (2x2-2-2.south east) {$+$};
     \node[red] at (2x2-1-2.north east) {$-$};
   \end{tikzpicture}
\end{document}

Anstatt der Pünktchen soll in der Gleichung die Grafik stehen, um die Rechenregel für die Determinante einer 2x2-Matrix zu veranschaulichen. Ist das möglich?

Als Zusatz: kann man die Tikz-Matrix mit äußeren Klammern bzw. äußeren senkrechten Strichen versehen, damit sie wie die Matrix in der Gleichung davor aussieht?

gefragt 11 Nov '16, 06:16

Hirshy's gravatar image

Hirshy
516723
Akzeptiert: 86%

bearbeitet 21 Nov '16, 05:50

Clemens's gravatar image

Clemens
20.4k123461


Du kannst die tikz-Grafik einfach an der gewünschten Stelle einfügen. Sie ist dann allerdings IMHO zu weit nach oben verschoben, da normalerweise die Grundlinie unterhalb einer tikzpicture-Umgebung verläuft. Also ist es sinnvoll, die baseline per Option passend zu setzen. Ich habe es mir im Beispiel einfach gemacht und sie schlicht vertikal zentriert.

Die Striche kannst Du entweder mit der decoration-Library von tikz machen oder einfach mit passenden Mathe-Befehlen. Auch hier habe ich mir das Leben leicht gemacht und \left| und \right| verwendet:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\[\det(A)=\begin{vmatrix} a & b \\ c & d \end{vmatrix}= \left|\begin{tikzpicture}[baseline=(current bounding box.center)]
     \matrix [%
       matrix of math nodes,
       column sep=1em,
       row sep=1em
     ] (2x2) {%
       a_{11} & a_{12} \\
       a_{21} & a_{22} \\
     };

           \path[->,blue] (2x2-1-1) edge (2x2-2-2);
           \path[->,red] (2x2-2-1) edge (2x2-1-2);

     \node[blue] at (2x2-2-2.south east) {$+$};
     \node[red] at (2x2-1-2.north east) {$-$};
   \end{tikzpicture} \right|
=ad-bc.\]
\end{document}

Das Ergebnis:

Gleichung mit Bild

bietet also noch Verbesserungspotential. Eine Möglichkeit der Verbesserung wäre beispielsweise auch für das Bild vmatrix zu verwenden:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\[\det(A)=\begin{vmatrix} a & b \\ c & d \end{vmatrix}= \begin{vmatrix}\begin{tikzpicture}
     \matrix [%
       matrix of math nodes,
       column sep=1em,
       row sep=1em
     ] (2x2) {%
       a_{11} & a_{12} \\
       a_{21} & a_{22} \\
     };

           \path[->,blue] (2x2-1-1) edge (2x2-2-2);
           \path[->,red] (2x2-2-1) edge (2x2-1-2);

     \node[blue] at (2x2-2-2.south east) {$+$};
     \node[red] at (2x2-1-2.north east) {$-$};
   \end{tikzpicture} \end{vmatrix}
=ad-bc.\]
\end{document}

besser mit vmatrix

Mit einigen amsmath-Umgebungen gibt es jedoch Probleme, da dies keine ganz normalen Umgebungen sind, sondern eher verkappte Befehle. In diesem Fall kann man den Umweg über ein Box-Register gehen, der auch in vielen anderen Problemfällen funktionieren sollte:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix}
\newsavebox\tikzbox
\begin{document}
\begin{lrbox}{\tikzbox}
  \begin{tikzpicture}
     \matrix [%
       matrix of math nodes,
       column sep=1em,
       row sep=1em
     ] (2x2) {%
       a_{11} & a_{12} \\
       a_{21} & a_{22} \\
     };
           \path[->,blue] (2x2-1-1) edge (2x2-2-2);
           \path[->,red] (2x2-2-1) edge (2x2-1-2);
     \node[blue] at (2x2-2-2.south east) {$+$};
     \node[red] at (2x2-1-2.north east) {$-$};
  \end{tikzpicture}
\end{lrbox}
\begin{align*}
\det(A)&=\begin{vmatrix} a & b \\ c & d \end{vmatrix}= \begin{vmatrix} \usebox\tikzbox\end{vmatrix}
=ad-bc.
\end{align*}
\end{document}
Permanenter link

beantwortet 11 Nov '16, 06:28

saputello's gravatar image

saputello
20.6k53458

bearbeitet 11 Nov '16, 08:41

Es war mir neu, dass man direkt in der Matheumgebung mit tikzpicture arbeiten kann, ich hatte da auch Fehlermeldungen in Erinnerungen, aber anscheinend war das etwas anderes. Wieder mal etwas gelernt, danke!

(11 Nov '16, 07:54) Hirshy

Eine Nachfrage: ist es auch möglich, das in einer align-Umgebung zu machen? Wenn ich deine Lösung kompiliere (online) erhalte ich einen Fehler:

Runaway argument? = \left |\begin {tikzpicture}[baseline=(current bounding box.center)]\ETC. Paragraph ended before \align* was complete. <to be read again> \par l.25

(11 Nov '16, 08:20) Hirshy

Ich hab die Fehlermeldung verbessert. Ich werde es mit dem Box-Register ausprobieren, danke!

(11 Nov '16, 08:43) Hirshy

@Hirshy: Bitte keinen Blockcode in Kommentaren verwenden! Das zerstört leider noch immer die Kommentarfunktion. Ich habe Deinen Kommentar gerade noch rechtzeitig über den Umweg der Umwandlung in eine Frage, Editieren und Zurückumwandlung in einen Kommentar korrigieren können.

(11 Nov '16, 09:13) saputello

Das war mir nicht bewusst, ich hab die Verschlimmbesserung jetzt (hoffentlich) richtig verbessert. Abschließend: das ganze soll später nicht nur mit LaTeX sondern mit WP Quicklatex auf einer Homepage angewendet werden. Da ich dort die Lösung mit der lrbox nicht anwenden kann, habe ich dort stattdessen die aligned*-Umgebung verwendet. Für die PDF-Version, werde ich dann aber wahrscheinlich auf die lrbox zurückgreifen.

(11 Nov '16, 09:27) Hirshy

Ich finde, es sieht besser aus, wenn alle Determinanten gleichgroß sind; d.h., ich würde auch die erste Determinante mit der matrix-lib setzen.

(01 Dez '16, 16:12) cis
Ergebnis 5 von 6 Alle anzeigen
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×598
×50
×31
×20

Frage gestellt: 11 Nov '16, 06:16

Frage wurde angeschaut: 1,957 Mal

Zuletzt aktualisiert: 01 Dez '16, 16:12