Entschuldigen Sie die einfache Frage, aber ich bin neu bei TikZ und habe große Probleme, auch nur einen einfachen Knoten zu definieren ...
Ich habe den folgenden Code:
\begin{tikzpicture}
\draw (0,0) -- (1,-1) -- (2,0) -- (2,2) -- (0,2) -- (0,0);
\end{tikzpicture}
Ich möchte lediglich, dass die Form durch den Code definiert wird, um sie in einer Situation wie dieser verwenden zu können:
\begin{tikzpicture}[node distance = 2cm, auto]
% Place nodes
\node [block] (init) {initialize model};
\node [cloud, left of=init] (expert) {expert};
\node [cloud, right of=init] (system) {system};
\node [block, below of=init] (identify) {identify candidate models};
\node [block, below of=identify] (evaluate) {evaluate candidate models};
\node [block, left of=evaluate, node distance=3cm] (update) {update model};
\node [decision, below of=evaluate] (decide) {is best candidate better?};
\node [block, below of=decide, node distance=3cm] (stop) {stop};
% Draw edges
\path [line] (init) -- (identify);
\path [line] (identify) -- (evaluate);
\path [line] (evaluate) -- (decide);
\path [line] (decide) -| node [near start] {yes} (update);
\path [line] (update) |- (identify);
\path [line] (decide) -- node {no}(stop);
\path [line,dashed] (expert) -- (init);
\path [line,dashed] (system) -- (init);
\path [line,dashed] (system) |- (evaluate);
\end{tikzpicture}
... wo ich statt z. B. „Block“ „Customnode“ (oder etwas, das ich selbst definiert habe) schreiben könnte und es auf die gleiche Weise, in der gleichen Art von Diagramm, mit Text darin, erscheinen lassen könnte.
Vielen Dank
Antwort1
TikZ hat viele vordefinierte Symbole. Das Symbol, nach dem Sie fragen, ist dem signal
Symbol in der shapes.symbols
Bibliothek sehr ähnlich (Abschnitt 67.4 in der Dokumentation). cloud
Dort ist auch ein Symbol definiert.
\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,shapes.symbols}
\begin{document}
\begin{tikzpicture}[
node distance = 3cm, auto,
block/.style={signal, draw, signal to=south}]
\node [block] (init) {initialize model};
\node [cloud,draw, left of=init] (expert) {expert};
\end{tikzpicture}
\end{document}
Antwort2
Tikz pics
eignet sich hervorragend für solche Dinge. Sie werden im Abschnitt 18.2 des Tikz-Handbuchs (Version 3.0.1a) ausführlich beschrieben.
Beispielsweise der Code:
\documentclass{article}
\usepackage{tikz}
\tikzset{
pics/mynode/.style args={#1,#2,#3}{
code={
\draw (0,0) -- (1,-1) -- (2,0) -- (2,2) -- (0,2) -- (0,0);
\node[#3] (#1) at (1,1) {#2};
}
}
}
\begin{document}
\begin{tikzpicture}
\draw (0,0) pic{mynode={A, Hi, blue}};
\draw (0,3) pic{mynode={B, Hello, red}};
\draw (2,1.5) pic{mynode={C, Bye,}};
\draw[thick, blue] (A)--(B)--(C)--(A);
\end{tikzpicture}
\end{document}
ergibt das Diagramm:
Ich habe Ihren „benutzerdefinierten Knoten“ als pic definiert mynode
. Es benötigt drei Argumente: die Knotenbezeichnung, den Knotentext und die Stilisierung für den Knoten (alle drei Argumente müssen angegeben werden, können aber leer gelassen werden). Das pic zeichnet Ihre benutzerdefinierte Form und platziert dabei einen „echten“ Knoten darin, auf den wir dann mit der Knotenbezeichnung wie im MWE verweisen können.
Antwort3
Das Definieren neuer Knotenformen ist nicht unbedingt eine grundlegende Frage. In diesem Fall können Sie jedoch ein wenig schummeln, indem Sie die single arrow
Form aus der shapes.arrows
Bibliothek verwenden.
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\tikzset{
mycustomnode/.style={
draw,
single arrow,
single arrow head extend=0,
shape border uses incircle,
shape border rotate=-90,
}
}
\begin{document}
\begin{tikzpicture}
\node [mycustomnode] {};
\node [mycustomnode] at (2,0) {abc};
\end{tikzpicture}
\end{document}