Tikz - 参数化设置节点文本

Tikz - 参数化设置节点文本

我想要在 tikz 中有一个节点圈,并且每个节点中的文本需要来自一个数组。我该如何实现?以下不起作用。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,shadows,arrows,positioning,}
\begin{document}
\fontsize{14}{21}\selectfont
\tikzstyle{line} = [draw, -stealth, thick]
\begin{tikzpicture}[every node/.append style={circle, text height=2ex, text depth=.25ex, text width=1.5em, text centered, draw=black!80, inner sep=0pt},>=stealth',auto,thick]
\def\names{A, B, C, D, E, F, G, H}
\foreach \a in {1,2,...,8}{
\draw (\a*360/8: 4cm) node (\a) {\names[\a]};
}
\end{tikzpicture}
\end{document}

答案1

尽管你可以使用双变量循环(就像你在your answer),我还想提一下只使用一个变量并使用该count=<macro>选项的可能性(我也将其更改\tikzstyle为更合适的\tikzset):

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,shadows,arrows,positioning,}

\tikzset{
  line/.style={
    draw, 
    -stealth, 
    thick
  }
}    

\begin{document}

\fontsize{14}{21}\selectfont
\begin{tikzpicture}[
  every node/.append style={
    circle, 
    text height=2ex, 
    text depth=.25ex, 
    text width=1.5em, 
    align=center, 
    draw=black!80, 
    inner sep=0pt
    },
  >=stealth',
  auto,
  thick
]
\foreach \t [count=\a] in {A,...,H}
{
  \draw (\a*360/8: 4cm) node (\a) {\t};
}
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

使用新阵列完成。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,shadows,arrows,positioning,}
\begin{document}
\fontsize{14}{21}\selectfont
\tikzstyle{line} = [draw, -stealth, thick]
\begin{tikzpicture}[every node/.append style={circle, text height=2ex, text depth=.25ex, text width=1.5em, text centered, draw=black!80, inner sep=0pt},>=stealth',auto,thick]
\foreach \a/\t in {1/A,2/B,3/C,4/D,5/E,6/F,7/G,8/H}{
\draw (\a*360/8: 4cm) node (\a) {\t};
}
\end{tikzpicture}
\end{document}

相关内容