
Wie füge ich unter jedem Diagramm eine Überschrift hinzu und lasse die Diagramme dennoch nebeneinander?
\documentclass{article}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{positioning}
\tikzset{main node/.style={circle,fill=black,draw,minimum size=.2cm,inner sep=0pt},}
\begin{center}
\begin{tikzpicture}
\node[main node, label=above:{$a$},] (1) {};
\node[main node, label=right:{$b$}] (2) [below right = 1cm and 1cm of 1] {};
\node[main node, label=left:{$c$}] (3) [below left = 1cm and 1cm of 1] {};
\path[draw, thick]
(1) edge node {} (2)
(2) edge node {} (3)
(1) edge node {} (3);
\end{tikzpicture} \hspace{2cm}
\begin{tikzpicture}
\node[main node, label=left:{$a$},] (1) {};
\node[main node, label=left:{$b$}] (2) [below = 1cm of 1] {};
\node[main node, label=right:{$c$}] (3) [right = 1cm of 1] {};
\node[main node, label=right:{$d$}] (4) [below = 1 cm of 3] {};
\path[draw, thick]
(1) edge node {} (2)
(2) edge node {} (4)
(3) edge node {} (4)
(1) edge node {} (3);
\end{tikzpicture}
\end{center}
\end{document}
Antwort1
Dies kann auf verschiedene Weise erreicht werden. Um überhaupt keine Bildunterschriften zu verwenden, können Sie die Antwort von M S verwenden, aber ohne figure
Umgebung, sondern mit minipage
anstelle von subfigure
und indem Sie den Text direkt nach schreiben \end{tikzpicture}
, ohne \caption
. Fügen Sie jedoch vor dem Text eine leere Zeile (Absatzumbruch) ein.
Hier zeige ich einen ganz anderen Ansatz, mit einem einzelnen tikzpicture
und dem zweiten nach rechts verschobenen Diagramm mit \begin{scope}[xshift=5cm, local bounding box=b]
. Das local bounding box
erstellt einen Knoten, der um den Inhalt des passt , den ich verwende, um ein mit dem Text scope
zu positionieren .\node
Noch ein Detail: Verwenden Sie im Allgemeinen nicht \usetikzlibrary{..}
after \begin{document}
. Dies scheint hier kein Problem zu verursachen, aber ich habe Fälle gesehen, in denen es nicht funktioniert. Daher ist es besser, Bibliotheken in der Präambel zu laden.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\tikzset{main node/.style={circle,fill=black,draw,minimum size=.2cm,inner sep=0pt},}
\begin{center}
\begin{tikzpicture}[
captiontext/.style={below=3mm, text width=5cm}
]
\node[main node, label=above:{$a$}] (1) {};
\node[main node, label=right:{$b$}, below right = 1cm and 1cm of 1] (2) {};
\node[main node, label=left:{$c$}, below left = 1cm and 1cm of 1] (3) {};
\draw [thick] (1) -- (2) -- (3) -- (1);
\node [captiontext] at (current bounding box.south) {Text text and more text ad infinitum and so on.};
\begin{scope}[xshift=5cm, local bounding box=b]
\node[main node, label=left:{$a$},] (1) {};
\node[main node, label=left:{$b$},below = 1cm of 1] (2) {};
\node[main node, label=right:{$c$}, right = 1cm of 1] (3) {};
\node[main node, label=right:{$d$}, below = 1 cm of 3] (4) {};
\draw [thick] (1) -- (2) -- (4) -- (3) -- (1);
\end{scope}
\node [captiontext] at (b.south) {More text text and more text ad infinitum and so on going on for a bit.};
\end{tikzpicture}
\end{center}
\end{document}
Antwort2
Sie können zwei nebeneinanderliegende Miniseiten verwenden. Das zu lösende Problem besteht darin, die Beschriftungen auf derselben Ebene anzuzeigen, auch wenn die Bilder und Beschriftungen unterschiedliche vertikale Größen haben.
Meine Lösung besteht darin, die Bilder in verschachtelte Miniseiten mit Ausrichtung unten einzubetten. Die äußeren Miniseiten sind stattdessen oben ausgerichtet, was eigentlich bedeutet, dass ihre Referenzpunkte die des oberen Felds sind, also die Unterseite des Bildes. Dadurch werden die Bildunterschriften an derselben vertikalen Position auf der Seite platziert.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{
main node/.style={
circle,
fill=black,
draw,
minimum size=.2cm,
inner sep=0pt
},
}
\begin{document}
\begin{figure}
\begin{minipage}[t]{0.45\textwidth}
% left column
\begin{minipage}[b]{\textwidth}
\centering
\begin{tikzpicture}
\node[main node, label=above:{$a$},] (1) {};
\node[main node, label=right:{$b$}] (2) [below right = 1cm and 1cm of 1] {};
\node[main node, label=left:{$c$}] (3) [below left = 1cm and 1cm of 1] {};
\path[draw, thick]
(1) edge node {} (2)
(2) edge node {} (3)
(1) edge node {} (3);
\end{tikzpicture}
\end{minipage}
\caption{This is the figure on the left, with a not so lengthy caption}
\end{minipage}\hfill % <--- don't forget
\begin{minipage}[t]{0.45\textwidth}
% right column
\begin{minipage}[b]{\textwidth}
\centering
\begin{tikzpicture}
\node[main node, label=left:{$a$},] (1) {};
\node[main node, label=left:{$b$}] (2) [below = 1cm of 1] {};
\node[main node, label=right:{$c$}] (3) [right = 1cm of 1] {};
\node[main node, label=right:{$d$}] (4) [below = 1 cm of 3] {};
\path[draw, thick]
(1) edge node {} (2)
(2) edge node {} (4)
(3) edge node {} (4)
(1) edge node {} (3);
\end{tikzpicture}
\end{minipage}
\caption{This is the figure on the right, with a long caption,
that should form at least three lines; we add text so that
it's long enough}
\end{minipage}
\end{figure}
\end{document}
Antwort3
Ich hoffe, der unten aufgeführte Code ist für Ihren Zweck geeignet. Es handelt sich im Wesentlichen um eine einzelne Abbildung mit zwei Untertiteln. Wenn Sie zwei verschiedene Abbildungen mit Untertiteln benötigen, lassen Sie es mich bitte wissen.
Basierend auf Ihrem letzten Kommentar. Sie können den Hauptteil der Bildunterschrift kommentieren.
\documentclass{article}
\usepackage{tikz,subcaption}
\begin{document}
\usetikzlibrary{positioning}
\tikzset{main node/.style={circle,fill=black,draw,minimum size=.2cm,inner sep=0pt},}
\begin{figure}
\centering
\begin{subfigure}[b]{0.4\linewidth}
\centering
\begin{tikzpicture}
\node[main node, label=above:{$a$},] (1) {};
\node[main node, label=right:{$b$}] (2) [below right = 1cm and 1cm of 1] {};
\node[main node, label=left:{$c$}] (3) [below left = 1cm and 1cm of 1] {};
\path[draw, thick]
(1) edge node {} (2)
(2) edge node {} (3)
(1) edge node {} (3);
\end{tikzpicture}
\caption{caption1} \label{fig:M1}
\end{subfigure}
\begin{subfigure}[b]{0.4\linewidth}
\centering
\begin{tikzpicture}
\node[main node, label=left:{$a$},] (1) {};
\node[main node, label=left:{$b$}] (2) [below = 1cm of 1] {};
\node[main node, label=right:{$c$}] (3) [right = 1cm of 1] {};
\node[main node, label=right:{$d$}] (4) [below = 1 cm of 3] {};
\path[draw, thick]
(1) edge node {} (2)
(2) edge node {} (4)
(3) edge node {} (4)
(1) edge node {} (3);
\end{tikzpicture}
\caption{caption2} \label{fig:M2}
\end{subfigure}
\caption{main caption}
\end{figure}
\end{document}
Die Ausgabe: