3
1

Was muss ich machen, damit der Rahmen sauber anschließt?

Verbesserungs- oder Vereinfachungsvorschläge allgemeiner Natur sind auch willkommen.

alt text

Öffne in Overleaf
\documentclass[varwidth, margin=5mm]{standalone}
\usepackage[ngerman]{babel}
\usepackage{amsmath, relsize, tikz}
\usetikzlibrary{matrix, fit, positioning}

\begin{document}

\begin{tikzpicture}[
font=\footnotesize, 
rounded corners=0.125pt,
]
% Einträge der Matrix
\def\a{\mathlarger{\mathlarger{\boldsymbol{\ast}}}}
\def\b{{\bullet}}
% Matrix
\matrix (m) [
matrix of math nodes,
inner sep=0pt, column sep=0.25em,
row sep=1pt,
nodes={inner sep=0.25em,text width=1em,align=center},
]
{%
|(oL)|\a & \b & \b & \cdots & |(oM)|\b  & |(T1o)|\b & \cdots & |(T2o)|\b & |(oR)|\b \\
0 & |(d22)|\a & \b & \cdots & \b & \b & \cdots & \b & \b \\
0 & 0 & |(d33)|\ddots & \ddots & \vdots &  \vdots & \cdots & \vdots &\vdots \\
\vdots & \vdots & \ddots & |(d44)|\ddots &  \b & \b & \cdots & \b &\b \\
0 & 0 & \cdots & 0 & |(uM)|\a  & |(T1u)|\b & \cdots & |(T2u)|\b &\b \\
};%

% Treppe
% oben
\draw[] (oL.north west) -- (oL.south west) -- 
(oL.south west-|d22.north west) -- (d22.south west) -- (d22.south east) --
(d22.south east-|d33.north west) -- ([yshift=1.5em]d33.south west);
% unten
\draw[] ([xshift=0.5em]d44.south) -- (d44.south-|uM.north west) -- (uM.south west) -- (uM.south east);
% Rahmen
\draw[red] (uM.south east) -- (oM.north east) -- (oM.north east-|oL.north west) node[midway, above, font=\tiny\sffamily]{Stufenform};

\end{tikzpicture}

\end{document}

gefragt 22 Apr '17, 18:57

cis's gravatar image

cis
9.5k75452491
Akzeptiert-Rate: 29%


Ich würde \mathstrut in die nodes der Matrix einfügen. Das führt IHMO zu einer saubereren vertikalen Ausrichtung:

Öffne in Overleaf
\documentclass[varwidth, margin=5mm]{standalone}
\usepackage[ngerman]{babel}
\usepackage{amsmath, relsize, tikz}
\usetikzlibrary{matrix, fit, positioning}

\begin{document}

\begin{tikzpicture}[
font=\footnotesize, 
rounded corners=0.125pt,
]
% Einträge der Matrix
\def\a{\mathlarger{\mathlarger{\boldsymbol{\ast}}}}
\def\b{{\bullet}}
% Matrix
\matrix (m) [
matrix of math nodes,
inner sep=0pt, column sep=0.25em,
row sep=1pt,
nodes={font=\mathstrut,text width=1em,align=center},
]
{%
|(oL)|\a & \b & \b & \cdots & |(oM)|\b  & |(T1o)|\b & \cdots & |(T2o)|\b & |(oR)|\b \\
0 & |(d22)|\a & \b & \cdots & \b & \b & \cdots & \b & \b \\
0 & 0 & |(d33)|\ddots & \ddots & \vdots &  \vdots & \cdots & \vdots &\vdots \\
\vdots & \vdots & \ddots & |(d44)|\ddots &  \b & \b & \cdots & \b &\b \\
0 & 0 & \cdots & 0 & |(uM)|\a  & |(T1u)|\b & \cdots & |(T2u)|\b &\b \\
};%

% Treppe
% oben
\draw[] (oL.north west) -- (oL.south west) -- 
(oL.south west-|d22.north west) -- (d22.south west) -- (d22.south east) --
(d22.south east-|d33.north west) -- ([yshift=1.5em]d33.south west);
% unten
\draw[] ([xshift=0.5em]d44.south) -- (d44.south-|uM.north west) -- (uM.south west) -- (uM.south east);
% Rahmen
\draw[red] (uM.south east) -- (oM.north east) -- (oM.north east-|oL.north west) node[midway, above, font=\tiny\sffamily]{Stufenform};

\end{tikzpicture}

\end{document}

alt text

Wird einem die Matrix dadurch zu groß, kann man den Abstand der Zeilen beispielsweise mit row sep=0pt verkleinern.

Permanenter link

beantwortet 22 Apr '17, 19:30

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 23 Apr '17, 10:13

Mmmh... ich habe \mathstruth letztens schon gesehen. Bloß wusste ich nicht, was das bewirkt. Also es funktioniert. Dadurch wird halt die Matrix dann doch etwas klobig. Ich dachte, es gibt ggf. TikZ-Mittel, die ich nicht kenne.

(22 Apr '17, 20:27) cis

@cis Ich sehe da nichts von klobig. Ich habe ja im Gegenzug das inner sep=0.25em rausgenommen. Dadurch ist die Matrix insgesamt kaum höher als vorher. Ich sehe das eher so, dass die Abstände jetzt an der richtigen Stelle sind.

(23 Apr '17, 10:19) saputello

Mir ist aufgefallen, dass mit \mathstruth dann sowas wie row 1/.style={font=\tiny}, ignoriert wird.

(23 Apr '17, 18:13) cis
1

@cis Das ist logisch weil every node/.style nach row 1.style angewandt wird. Damit werden die Optionen von letzterem gegebenenfalls überschrieben. Du kannst aber statt font=\mathstrut auch text height=\ht\strutbox, text depth=\dp\strutbox verwenden. Du kannst dabei auch noch Faktoren verwenden, um die reservierte Höhe bzw. Tiefe besser an Deinen Bedarf anzupassen.

(23 Apr '17, 21:06) esdd
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:

×728
×58

gestellte Frage: 22 Apr '17, 18:57

Frage wurde gesehen: 5,886 Mal

zuletzt geändert: 23 Apr '17, 21:06