
我試圖讓圖表中的表格看起來不錯,但該物件\tolabel
似乎溢出了圓的半徑,這使得表格看起來未對齊。
如果我將最後一個物件更改為另一個對象,\labela
或者\labelb
它適合。這似乎是由於圓圈內的問號造成的。我怎麼才能讓它合適?
該表是一個帶有其他組件的更大圖形的一部分。但這是唯一不起作用的部分。我的程式碼如下:
\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}
答案1
這展示瞭如何使用保存箱而不是 tikzpictures。我還移動到基線以匹配文本,
\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}
答案2
這是 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}