\foreach 与 \from 和 \to 语句有何限制?

\foreach 与 \from 和 \to 语句有何限制?

我正在尝试使用 TikZ 和语句绘制一个自动机\foreach。下面是我所拥有的示例。现在,我有两个问题,

  1. 有没有办法使用花括号{,}代替(,)我现在使用的 来标记自动机的某些状态?我希望有A{A},而不是A(A)
  2. \foreach在某些情况下,语句不允许我绘制箭头。我想从A到绘制箭头A(A)(理想情况下,A{A}修复后)以及从A到 绘制箭头A'(A),但出于某种原因,它不喜欢我用括号命名这些状态的方式。

有谁能帮我解决这个问题?我非常感激。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\[\begin{tikzpicture}[shorten >=1pt,->]
\tikzstyle{vertex}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt]
\foreach \name/\a in {A/90, A''/180, A(A)/270, A'(A)/0}
\node[vertex] (\name) at (\a:3cm) {$\name$};
\foreach \from/\to in {A/A'', A/A(A), A/A'(A)}
\draw (\from) -- (\to);
\end{tikzpicture}\]
\end{document}

在此处输入图片描述

答案1

我假设您希望在节点中打印花括号。要打印反斜杠,您必须使用\{\},但这些不能用于node名称。也就是说,您不能执行类似 的操作。作为一种解决方法,您可以对名称和内容\node (\{A\}) at (0,0) {A};使用不同的字符串,例如nodenode

\foreach \name/\word/\a in {A/A/90, A''/A''/180, A[A]/A\{A\}/270, A'[A]/A'\{A\}/0}
  \node[vertex] (\name) at (\a:3cm) {$\word$};

关于你的第二个问题,我认为这是因为括号混淆了名称的解析node。例如,使用A(A)作为名称,你会得到\node (A(A)) ...。我猜第一个右括号被视为名称的结尾,从而给出错误No shape named A(A is known

您的代码有两个工作版本,一个带有括号,一个带有大括号,以及上面提到的解决方法。

\documentclass[tikz,border=5mm]{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[shorten >=1pt,->]
\tikzset{vertex/.style={circle,fill=black!25,minimum size=25pt,inner sep=0pt}}
\foreach \name/\a in {A/90, A''/180, A[A]/270, A'[A]/0}
\node[vertex] (\name) at (\a:3cm) {$\name$};
\foreach \from/\to in {A/A'', A/A[A], A/A'[A]}
\draw (\from) -- (\to);
\end{tikzpicture}

\begin{tikzpicture}[shorten >=1pt,->]
\tikzset{vertex/.style={circle,fill=black!25,minimum size=30pt,inner sep=0pt}}
\foreach \name/\word/\a in {A/A/90, A''/A''/180, A[A]/A\{A\}/270, A'[A]/A'\{A\}/0}
\node[vertex] (\name) at (\a:3cm) {$\word$};
\foreach \from/\to in {A/A'', A/A[A], A/A'[A]}
\draw (\from) -- (\to);
\end{tikzpicture}
\end{document}

在此处输入图片描述在此处输入图片描述

相关内容