
Ich versuche, einer Tabelle in einem Diagramm ein ordentliches Aussehen zu verleihen, aber das Objekt \tolabel
scheint den Radius des Kreises zu überschreiten, wodurch die Tabelle nicht ausgerichtet erscheint.
Wenn ich das letzte Objekt gegen ein anderes austausche, passt \labela
es \labelb
. Das liegt anscheinend an dem Fragezeichen im Kreis. Wie kann ich es passend machen?
Diese Tabelle ist Teil einer größeren Figur mit anderen Komponenten. Aber das ist der einzige Teil, der nicht funktioniert. Mein Code ist unten:
\documentclass{article}
\usepackage{graphicx} % Required for inserting images
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows, calc}
\newcommand{\labela}{\tikz{\fill[blue, draw=black] (0,0) circle (0.25cm);}}
\newcommand{\labelb}{\tikz{\fill[purple, draw=black] (0,0) circle (0.25cm);}}
\newcommand{\unlabeled}{\tikz{\fill[white, draw=black] (0,0) circle (0.25cm);}}
\newcommand{\tolabel}{%
\tikz{\fill[yellow, draw=black] (0,0) circle (0.25cm); \node[text=black] at (0,0) {\textbf{?}};}%
}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\node[draw, fill=gray!20, minimum width=3cm, minimum height=1cm] at (15,4) {%
\begin{tabular}{@{}l@{}}
Legend \\
\labela \hspace{0.5em} Label A \\
\labelb \hspace{0.5em} Label B \\
\unlabeled \hspace{0.5em} Unlabeled \\
\tolabel \hspace{0.5em} {\shortstack{Sample to\\ be labeled}}
\end{tabular}
};
\end{tikzpicture}
\caption{Caption}
\label{fig:enter-label}
\end{figure}
\end{document}
Antwort1
Hier wird gezeigt, wie man Saveboxen anstelle von Tikzpictures verwendet. Ich habe auch Baselines verwendet, um sie an den Text anzupassen.
\documentclass{article}
\usepackage{graphicx} % Required for inserting images
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows, calc}
\newsavebox{\labela}
\savebox{\labela}{\tikz[baseline=(A.base)]{\fill[blue, draw=black] (0,0) circle (0.25cm);
\node (A) at (0,0) {\textbf{\strut}};}}
\newsavebox{\labelb}
\savebox{\labelb}{\tikz[baseline=(A.base)]{\fill[purple, draw=black] (0,0) circle (0.25cm);
\node (A) at (0,0) {\textbf{\strut}};}}
\newsavebox{\unlabeled}
\savebox{\unlabeled}{\tikz[baseline=(A.base)]{\fill[white, draw=black] (0,0) circle (0.25cm);
\node (A) at (0,0) {\textbf{\strut}};}}
\newsavebox{\tolabel}
\savebox{\tolabel}{\tikz[baseline=(A.base)]{\fill[yellow, draw=black] (0,0) circle (0.25cm);
\node (A) at (0,0) {\textbf{?}};}}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\node[draw, fill=gray!20, minimum width=3cm, minimum height=1cm] at (15,4) {%
\begin{tabular}{@{}l@{}}
Legend \\
\usebox\labela \hspace{0.5em} Label A \\
\usebox\labelb \hspace{0.5em} Label B \\
\usebox\unlabeled \hspace{0.5em} Unlabeled \\
\usebox\tolabel \hspace{0.5em} {\shortstack{Sample to\\ be labeled}}
\end{tabular}
};
\end{tikzpicture}
\caption{Caption}
\label{fig:enter-label}
\end{figure}
\end{document}
Antwort2
Dies ist eine Arbeit für eine TikZ-Matrix:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
mynode/.style={
circle,
text height=2.5ex, text depth=1ex,
text width=.25cm,
inner sep=0pt,
text centered,
draw,
fill=#1
},
}
\usepackage{caption}
\begin{document}
\begin{figure}\centering
\begin{tikzpicture}
\matrix[
matrix of nodes, nodes in empty cells,
fill=gray!30,
nodes={anchor=center},
column 2/.style={text width=width("be labelled")},
inner xsep=6pt,
row sep=4pt,
] (mymatr) {
&[4pt] \\[6pt]
|[mynode=blue]| & Label A \\
|[mynode=purple]| & Label B \\
|[mynode=white]| & Unlabelled \\[-2pt]
|[mynode=yellow]|{?} & {Sample to\\ be labelled} \\
};
\node[anchor=north west, inner ysep=4pt] at (mymatr.north west) {Legend};
\end{tikzpicture}
\caption{Caption}
\end{figure}
\end{document}