如何防止节点标签显示时垂直列错位

如何防止节点标签显示时垂直列错位

我正在尝试使用生成圆圈的宏来制作各种月相的垂直列,但是当我将节点标签添加到圆圈(以指定它是满月)时,它会将包含标签的圆圈稍微向上和向右移动。

\documentclass[leqno,12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calendar,fpu}

\newcommand{\moon}[2][]{%
\def\lunarage{#2}%
\pgfmathsetmacro\textF{ifthenelse(\lunarage==15,"F","")}
\tikz []{
    \draw (0,0) circle [radius=1ex];
    \node[color=black] (0,0) {\textF};
    %
    }%
}
\begin{document}\noindent%
    \foreach \d in {0,1,...,30}{%
    \moon[]{\d}  \\   }
\end{document}

谢谢你的帮助!

答案1

您正在绘制一个circle,并node在其上方绘制一个 。由于此节点比圆宽,因此此节点moon比所有其他 都宽moons

我认为最好使用一个circular节点,而不是circle在其上放置一个未绘制的节点。您必须确保它minimum size足够大以包含F(或您想要的任何字母)。这样,所有节点都moons具有相同的大小。

\documentclass[leqno,12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calendar,fpu}

\newcommand{\moon}[2][]{%
\def\lunarage{#2}%
\pgfmathsetmacro\textF{ifthenelse(\lunarage==15,"F","")}
\tikz []{
    \node[draw, circle, color=black, inner sep=0pt, minimum size=5mm] (0,0) {\textF};
    %
    }%
}
\begin{document}\noindent%
    \foreach \d in {0,1,...,30}{%
    \moon[]{\d}  \\   }
\end{document}

在此处输入图片描述

相关内容