Ich stehe vor einem dummen Problem. Ich kann die letzten beiden Felder nicht verbinden. Außerdem möchte ich in einem der Felder |.| haben, weiß aber nicht, wie das geht. Kann mir jemand dabei helfen?
\documentclass{standalone}
\usepackage{amsmath,amscd,amssymb,latexsym,upref} %stmaryrd
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usetikzlibrary{arrows.meta,
backgrounds,
chains,
fit,
quotes}
\begin{document}
\resizebox{16cm}{2cm}{%
\begin{tikzpicture}[auto,
node distance = 12mm,
start chain = A going right,
block/.style = {draw, fill=white,
text width=#1, minimum height=10mm, align=center,
outer sep=0pt, on chain},
block/.default = 18mm,
container/.style = {draw, fill=gray!50,
inner xsep=2mm, inner ysep=7mm},
]
\node [block=14mm] {a}; % block name is A-1
\node [block=12mm] {b};
\node [block=22mm] {c};
\node [block=15mm] {d};
\node [block=22mm] {e}; % block name is A-4
\node [block=22mm] {f}; % block name is A-6
\node [block=12mm] {g};
\node [block=24mm] {h}; % block name is A-8
\node [block=24mm] {i}; % block name is A-8
%
\scoped[on background layer]
\node [container, label={[anchor=north]joined},
fit= (A-5) (A-6)] (container) {};
\draw [-Stealth]
(A-1) edge (A-2) % text on arrow is between " and "
(A-2) edge (A-3)
(A-3) edge (A-4)
(A-4) edge (A-5)
(A-5) edge (A-6)
(A-6) edge (A-7);
(A-7) edge (A-8);
(A-8) edge (A-8);
\end{tikzpicture}
}
\end{document}
Antwort1
Der letzte mit i gekennzeichnete Block hat den Namen A-9
, und wenn Sie Semikolons einfügen, müssen Sie einen neuen Zeichenbefehl hinzufügen. Ich hoffe, ich habe Ihre Modulo-Bar-Anfrage richtig verstanden.
\documentclass{standalone}
\usepackage{amsmath,amscd,amssymb,latexsym,upref} %stmaryrd
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usetikzlibrary{arrows.meta,
backgrounds,
chains,
fit,
quotes}
\begin{document}
\resizebox{16cm}{2cm}{%
\begin{tikzpicture}[auto,
node distance = 12mm,
start chain = A going right,
block/.style = {draw, fill=white,
text width=#1, minimum height=10mm, align=center,
outer sep=0pt, on chain},
block/.default = 18mm,
container/.style = {draw, fill=gray!50,
inner xsep=2mm, inner ysep=7mm},
]
\node [block=14mm] {a}; % block name is A-1
\node [block=12mm] {b};
\node [block=22mm] {c};
\node [block=15mm] {d};
\node [block=22mm] {e~$|.|$}; % block name is A-4
\node [block=22mm] {f}; % block name is A-6
\node [block=12mm] {g};
\node [block=24mm] {h}; % block name is A-8
\node [block=24mm] {i}; % block name is A-9
%
\scoped[on background layer]
\node [container, label={[anchor=north]joined},
fit= (A-5) (A-6)] (container) {};
\draw [-Stealth]
(A-1) edge (A-2) % text on arrow is between " and "
(A-2) edge (A-3)
(A-3) edge (A-4)
(A-4) edge (A-5)
(A-5) edge (A-6)
(A-6) edge (A-7)
(A-7) edge (A-8)
(A-8) edge (A-9);
\end{tikzpicture}
}
\end{document}
Antwort2
- das betreffende MWE kommt mir sehr bekannt vor :-)
- Sie sollten den Code analysieren, den Sie in Ihrem MWE verwenden. Dann werden Sie feststellen, dass der Name des letzten Knotens
A-9
(und nichtA-8
wie in Ihrem MWE angegeben) lautet: - für die gängigsten Größen sollten Sie beispielsweise „ als Standardgröße“ auswählen
block/.default=22mm
und nur für den Rest die gewünschten Textbreiten schreiben (brauchen Sie wirklich so unterschiedliche Knotengrößen? Ich würde nur „18mm
nad“ verwenden9mm
, siehe mwe unten) - mathematischer Ausdruck, den Sie in Knoten wie in Text schreiben können, zum Beispiel $|\cdot|$
*nicht verwenden
\resizebox{16cm}{...
. Dadurch wird die Größe des gesamten Bilds geändert und das Bild dadurch hässlich. Berechnen Sie stattdessen die Breite der Knoten und die Knotenabstände so neu, dass ihre Summe 16 cm ergibt:14 mm + 12 mm + 22 mm + 15 mm + 22 mm + 22 mm +12 mm +24 mm +24 mm + 9 x 2 x (Innenabstand) + 8 x (Knotenabstand) =
318 mm
was fast doppelt so lang ist. Ich schlage vor, die Länge aller Bildelemente zu halbieren (siehe mwe unten) und eine kleinere Schriftgröße zu verwenden, zum Beispiel
footnotesize
:
aus mwe folgt nicht, dass Sie Text auf Pfeile zwischen Knoten hinzufügen. Wenn dies der Fall ist, können Sie sie mit join
einem Makro aus chains
der Bibliothek zeichnen
Wenn Sie die obigen Kommentare und Vorschläge berücksichtigen, werden Sie:
\documentclass[margin=3mm]{standalone}
\usepackage{amsmath,amscd,amssymb,latexsym,upref} %stmaryrd
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usetikzlibrary{arrows.meta,
backgrounds,
chains,
fit,
quotes}
\begin{document}
\begin{tikzpicture}[
node distance = 7mm,
start chain = A going right,
block/.style = {draw, fill=white,
text width=#1, minimum height=10mm, align=center,
font=\footnotesize, inner sep=1mm, outer sep=0pt,
on chain, join=by -Stealth},
block/.default = 12mm,
container/.style = {draw, fill=gray!50,
inner xsep=2mm, inner ysep=7mm},
]
\node [block=6mm] {a}; % block name is A-1
\node [block=6mm] {b};
\node [block] {$|\cdot|$};
\node [block=6mm] {d};
\node [block] {e}; % block name is A-4
\node [block] {f}; % block name is A-6
\node [block=6mm] {g};
\node [block] {h};
\node [block] {i}; % block name is A-9
%
\scoped[on background layer]
\node [container, label={[anchor=north]joined},
fit= (A-5) (A-6)] (container) {};
\end{tikzpicture}
\end{document}
Notiz: Wenn Sie Pfeile zwischen Knoten beschriften möchten, sollten Sie join
die Option aus der Blockstildefinition entfernen und zum Bild hinzufügen:
\draw [-Stealth]
(A-1) edge ["$\alpha$"] (A-2)
(A-2) edge ["$\beta$"] (A-3)
(A-3) edge ["$\gamma$"] (A-4)
(A-4) edge ["$\epsilon$"] (A-5)
(A-5) edge ["$\zeta$"] (A-6)
(A-6) edge ["$\theta$"] (A-7)
(A-7) edge ["$\iota$"] (A-8)
(A-8) edge ["$\kappa$"] (A-9);
und zu den Bildoptionen hinzufügen:
every edge quote/.append style = {font=\footnotesize}
das Zeichnen von Bildern erfordert viel Geduld, Genauigkeit und Zeit …