TikZ 多坐标框架实现不起作用

TikZ 多坐标框架实现不起作用

我正在尝试使用 TikZ 绘制三个不同的坐标系。我已经成功完成了。但是,为了让我的代码更具可读性,我尝试将其分解为更分散和更连续的方式。第二种实现(如下所示)产生的结果与第一种完全不同。下面是两个代码块,第一个有效,第二个无效。我的问题是为什么这些非常相似的实现会产生不同的结果?

首次实施

\documentclass[10pt, fleqn]{article}

\usepackage{tikz}
\usetikzlibrary{automata, arrows, positioning, fit, petri}

\begin{document}

\begin{tikzpicture}[ultra thick, scale = 2]

    \foreach \tilt / \ylength / \xlength / \ylabel / \xlabel in { 0/3/4/{y}/{x}, -45/4/1.5/{q'}/{d'}, -60/4/1.5/{q}/{d} } 
    \draw [<->, rotate=\tilt] (0, \ylength) node (yaxis) [above] {\ylabel} |- (\xlength, 0) node (xaxis) [right] {\xlabel};

\end{tikzpicture}


\end{document}

第二次实施

\documentclass[10pt, fleqn]{article}

\usepackage{tikz}
\usetikzlibrary{automata, arrows, positioning, fit, petri}

\begin{document}

\begin{tikzpicture}[ultra thick, scale = 2]

    %% Define y-axis nodes for rotational reference frames
    \foreach \nodename / \axislength / \axislabel in { {yaxis}/3/{y}, {yaxis}/4/{q}, {yaxis}/4/{q'} }
    \node (\nodename) at (0, \axislength) [above] {\axislabel};

    %% Define x-axis nodes for rotational reference frames
    \foreach \nodename / \axislength / \axislabel in { {xaxis}/4/{x}, {xaxis}/1.5/{d}, {xaxis}/1.5/{d'} }
    \node (\nodename) at (\axislength, 0) [right] {\axislabel};

    %% Connect nodes to form rotational reference frames
    \foreach \tilt / \nodenamey / \nodenamex in { 0/{yaxis}/{xaxis}, -45/{yaxis}/{xaxis}, -60/{yaxis}/{xaxis} }
    \draw [<->, rotate=\tilt] (\nodenamey) |- (\nodenamex);

\end{tikzpicture}


\end{document}

提前感谢所有帮助!

答案1

删除最后一个 后的空格{xaxis}

该空间被占用,\foreach以便 PGF 尝试查找名为{xaxis}␣(不存在) 的节点:

! Package pgf Error: No shape named {xaxis}  is known.

同样的情况也会发生在分别\axislabels{q'}␣和的情况下{d'}␣,但由于这些是排版的(和\unskipped),因此不会造成问题。

您需要让最后一个元素前面没有空格,例如

…, -60/yaxis/{xaxis}}

或者同样

…, -60/yaxis/xaxis}

如果你把每个元素放在自己的行上,就像

\foreach \a/\b/\c in {
   a/b/c,
   d/e/f,
   g/h/i
}

您还会在最后一个\c定义中看到一个虚假的空格:i␣

这需要阅读

\foreach \a/\b/\c in {
   a/b/c,
   d/e/f,
   g/h/i}

或者

\foreach \a/\b/\c in {
   a/b/c,
   d/e/f,
   g/h/i%
}

相关内容