"?"로 인해 tikzpicture가 테이블에 맞지 않습니다. 물체 내부의 기호

"?"로 인해 tikzpicture가 테이블에 맞지 않습니다. 물체 내부의 기호

다이어그램의 테이블을 보기 좋게 만들려고 하는데 개체가 \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 대신 savebox를 사용하는 방법을 보여줍니다. 텍스트에 맞게 기준선으로 이동도 했고,

\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}

여기에 이미지 설명을 입력하세요

관련 정보