为什么 yshift 不起作用?

为什么 yshift 不起作用?

我有一个如下所示的 TikZ 代码。如您在 \foreach 中的第二行所见,我希望箭头逐个放置在下方。但是它不起作用。我尝试调试了一段时间,但还没有修复它。

\begin{tikzpicture}[scale = 0.6]
\foreach \n in {1,2,3,4,5}{
    \node[shape=circle,draw,inner sep=0.7](number \n) at (\n,0) {$a_\n$};
    \draw[|->,yshift=-\n cm](number 1.west) -- (number \n.east);
}
\node[inner sep=1] at (6,0) {$\cdots$};
\end{tikzpicture}

在此处输入图片描述

我应该写一些类似的东西yshift=(-\n) cm来告诉引擎优先级吗?

答案1

这是一种方法。你可以做yshift任何你想做的事,但(number \n)不能移动。

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale = 0.6]
\foreach \n in {1,2,3,4,5}{
    \node[shape=circle,draw,inner sep=0.7](number \n) at (\n,0) {$a_\n$};
    \coordinate (level \n) at (0,-\n);
    \draw[|->] (number 1.west |- level \n) -- (number \n.east |- level \n);
}
\node[inner sep=1] at (6,0) {$\cdots$};
\end{tikzpicture}
\end{document} 

在此处输入图片描述


事实证明您可以在坐标内部应用 yshift。

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale = 0.6]
\foreach \n in {1,2,3,4,5}{
    \node[shape=circle,draw,inner sep=0.7](number \n) at (\n,0) {$a_\n$};
    \draw[|->] ([yshift=-\n cm] number 1.west) -- ([yshift=-\n cm] number \n.east);
}
\node[inner sep=1] at (6,0) {$\cdots$};
\end{tikzpicture}
\end{document} 

相关内容