用圆圈内的填充画隐藏文本

用圆圈内的填充画隐藏文本

我正在尝试学习 Tikz,但在填充绘制方法、圆圈和文本方面遇到了一些问题。我想在背景中画一个椭圆,顶部有一个圆圈,圆圈内有一个文本。

我可以使用圆形 + 文本,或椭圆形 + 圆形,但文本会以某种方式隐藏。下面的代码是我所能得到的,它似乎无效,但我找不到原因。

欢迎任何帮助!

谢谢

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgffor}

\begin{document}

\begin{tikzpicture}

\draw (0,0) -- (0,0) node {Lvl1};

\newcount\myX
\foreach \id [count=\x from 0] in {{00},{01},{10},{11}}
    \myX = \numexpr(3 + \x * 2)\relax;
    % the ellipse code
    \filldraw[fill=gray!20!white, thick] (\myX,0) circle [x radius=0.9, y radius=0.7];
    % the circle code
    \draw [thick,black] (\myX,0) circle [radius=0.5] node {\id};

\end{tikzpicture}

\end{document}

答案1

如果循环中的命令数\foreach大于 1,则需要一对{and }(如在 C/C++ 和许多其他编程语言中)。在原始代码中,只有

\myX = \numexpr(3 + \x * 2)\relax;

被识别为循环内部,因此出现编译错误。

添加{},你将得到你想要的:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgffor}

\begin{document}

\begin{tikzpicture}

\draw (0,0) -- (0,0) node {Lvl1};

\newcount\myX
\foreach \id [count=\x from 0] in {00,01,10,11} {
    \myX = \numexpr(3 + \x * 2)\relax;
    % the ellipse code
    \filldraw[fill=gray!20!white, thick] (\myX,0) circle [x radius=0.9, y radius=0.7];
    % the circle code
    \draw [thick,black] (\myX,0) circle [radius=0.5] node {\id};
}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容