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, 12:57

cis's gravatar image

cis
7.5k14159253
Akzeptiert: 72%


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, 13:30

saputello's gravatar image

saputello
20.6k53458

bearbeitet 23 Apr '17, 04: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, 14: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, 04:19) saputello

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

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

×603
×50

Frage gestellt: 22 Apr '17, 12:57

Frage wurde angeschaut: 1,431 Mal

Zuletzt aktualisiert: 23 Apr '17, 15:06