Anschlussfrage zu wie-stelle-ich-die-matrixparameter-bei-der-tikz-bibliothek-matrix-ein

alt text

Ich habe in folgendem Code die Labels als overlay deklariert und im MatrixStyle eingestellt column sep=-\pgflinewidth, row sep=-\pgflinewidth

Trotzdem tauchen noch unerwünschte Abstände auf - im Bild rot und blau markiert

Hinweise:

  • Ich füge hier zwei tikz-Matrizen (Kasten I, Kasten II) in eine tikz-Matrix. Dazu habe ich die beiden in lrboxen definiert; ich fand keine andere Möglichkeit. Könnten die Abstandsprobleme damit zusammenhängen?

  • Ich habe hier meist mit \def, statt \newcommand gearbeitet, weil ich Notation angenehmer finde, wenn sie keine Probleme hervorruft.

Open in Online-Editor
\documentclass[border=10pt, varwidth]{standalone}
%\documentclass[]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel} 
\usepackage[T1]{fontenc}

\usepackage{amsmath,amsfonts,amssymb, relsize}

\usepackage{tikz}
    \usetikzlibrary{matrix, decorations.pathreplacing}

\begin{document}

\tikzset{MatrixStyle/.style={%
%matrix of math nodes,
%draw, densely dashed, 
%inner ysep=2.5pt, 
%%column sep=5ex, row sep = 5ex,
%nodes={
%outer sep=0mm,  % 
%inner sep=2pt,
%%text width=1.5em,align=center
%%node distance = 0cm, % kein Effekt
%},
matrix of math nodes,
  draw, densely dashed, 
  inner ysep=2.5pt,
  column sep=-\pgflinewidth,% <- column sep passend setzen
  row sep=-\pgflinewidth% <- row sep passend setzen
}%
}

% Label für Blöcke definieren
\tikzset{%
BlockLabel/.style n args={4}{%
label={[overlay, label position={#3}, rotate={#4}]:
{\text{$\mathsmaller{(#1 \times #2)}$}} % Text
} 
}, 
BlockLabel/.default={?}{?}{below}{0}
}%

% Leerer Block
\def\Ph{\phantom{1}}
\def\BlockLeer{%
\begin{matrix}
\Ph & \Ph & \Ph \\
    &     & \\ 
    &     & \\
\end{matrix}
}%

% Unbekannter Block
\def\BlockUnbekannt{%
\node[draw, densely dashed,
BlockLabel={?}{?}{above}{0}, 
] (BlockUnbekannt){
\begin{matrix}
\Ph & \Ph & \Ph \\
    &  ?  & \\ 
    &     & \\
\end{matrix}
};
}%

% Jordan Kasten I, Block I
\def\JordanKastenIBlockI{%
\node[draw, densely dashed, inner sep=2.5pt, 
BlockLabel={3}{3}{below}{0}, 
] (JordanKastenIBlockI){
\begin{matrix}
0 & 1 & \\
   & 0 & 1 \\ 
   &   & 0 \\
\end{matrix}
};
}%

% Jordan Kasten I, Block II
\def\JordanKastenIBlockII{%
\BlockUnbekannt
}

% Jordan Kasten I
\newsavebox\InhaltJordanKastenI
\begin{lrbox}{\InhaltJordanKastenI}
\begin{tikzpicture}
\matrix (JordanKastenI) [
MatrixStyle,
BlockLabel={?}{?}{above}{0}, 
]
{%
\JordanKastenIBlockI &  \\
                               & \JordanKastenIBlockII \\
};
\end{tikzpicture}
\end{lrbox}
\newcommand{\JordanKastenI}{\usebox\InhaltJordanKastenI}

% Jordan Kasten II, Block I
\def\JordanKastenIIBlockI{%
\node[draw, densely dashed,
BlockLabel={2}{2}{below}{0}, 
] (JordanKastenIIBlockI){
\begin{matrix}
1 & 1 \\
   & 1 \\ 
\end{matrix}
};
}%

% Jordan Kasten II, Block II
\def\JordanKastenIIBlockII{%
\BlockUnbekannt
}

% Jordan Kasten II
\newsavebox\InhaltJordanKastenII
\begin{lrbox}{\InhaltJordanKastenII}
\begin{tikzpicture}[]
\matrix (JordanKastenII) [
MatrixStyle,
BlockLabel={?}{?}{above}{0}, 
]
{%
\JordanKastenIIBlockI &  \\
                                & \JordanKastenIIBlockII \\
};
\end{tikzpicture}
\end{lrbox}
\newcommand{\JordanKastenII}{\usebox\InhaltJordanKastenII}

\begin{tikzpicture}[scale=1]

% Jordannormalform JNF
\def\LabelJNF{$(7 \times 7)$}
\matrix (m) [%label=below:,
left delimiter={(},right delimiter={)}, 
MatrixStyle, draw=none, 
]
{%
\JordanKastenI &  \\
                      &  \JordanKastenII  \\
};
% Underbrace
\draw [ decoration={brace}, decorate]  (m.south east) -- (m.south west)  node[midway, below=4.5pt]{\LabelJNF};

% Platzhalter "J = "
\node[xshift=-0.75cm] at (m.west) {$J =$};
\end{tikzpicture}

\end{document}

gefragt 25 Jun '16, 18:07

cis's gravatar image

cis
9.5k75452491
Akzeptiert-Rate: 29%

geschlossen 04 Jul '16, 22:36

Henri's gravatar image

Henri
15.7k133943

1

Ich glaub, die Frage hat sich erledigt: wenn ich bei der Hauptmatrix inner sep= 0pt, outer sep=1.5pt, dazuschreibe sieht es eigentlich ganz gut aus.

(25 Jun '16, 18:57) cis

@saputello Was hast du denn für eine Bleeding-Edge-Version? Dieses Minimalbeispiel meldet bei mir nichts. Wenn ich pgfmanual.pdf nach \begin{matrix} durchsuche kommt nichts. Auch das Beispiel aus der Frage produziert bei mir (TL2016) keine Meldung. Bist du dir sicher?

(04 Jul '16, 22:32) Henri

@Henri: Ich bin sicher, dass ich diese Meldung in der log-Datei hatte. Mit der aktuellen Versionen von TL2016 habe ich die in der Tat nicht. Ich weiß aber nicht mehr, mit welcher Version ich vor zwei Wochen getestet habe, eventuell im Online-Editor. Da ich es selbst nicht mehr nachvollziehen kann, werde ich den Kommentar mal löschen. Trotzdem finde ich unschön, dass oben beide Schreibweisen gemischt werden, ohne dass für mich ein Grund erkennbar ist.

(05 Jul '16, 08:31) saputello

@saputello Kann sein, dass ich nicht ganz verstehe, worüber Ihr diskutiert, aber in dem MWE kommt zum einen der TikZ Befehl \matrix vor und zum anderen die im Mathemodus zu verwendende matrix Umgebung, die erstmal nichts mit TikZ zu tun hat. Also zum einen etwas wie \tikz\matrix{...\\}; und zum anderen etwas wie $\begin{matrix}...\end{matrix}$

(06 Jul '16, 01:04) esdd

Die Frage wurde aus folgenden Grund "Frage in den Kommentaren gelöst" geschlossen Henri 04 Jul '16, 22:36

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: 25 Jun '16, 18:07

Frage wurde gesehen: 3,519 Mal

zuletzt geändert: 06 Jul '16, 01:09