
Estou tentando fazer com que uma tabela em um diagrama pareça decente, mas o objeto \tolabel
parece ultrapassar o raio do círculo, o que faz com que a tabela pareça desalinhada.
Se eu trocar o último objeto por outro like \labela
ou \labelb
cabe. Parece ser devido ao ponto de interrogação dentro do círculo. Como posso ajustá-lo?
Esta tabela faz parte de uma figura maior com outros componentes. Mas esta é a única parte que não está funcionando. meu código está abaixo:
\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}
Responder1
Isso mostra como usar saveboxes em vez de tikzpictures. Também mudei para linhas de base para corresponder ao texto,
\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}
Responder2
Este é um trabalho para uma matriz TikZ:
\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}