我正在尝试学习 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}