是否可以进行转换以应用于 TikZ 图片中的其余命令?

是否可以进行转换以应用于 TikZ 图片中的其余命令?

\drawTikZ 的一个不错的功能是,您可以在命令(或等)中间应用坐标变换\path,它将自动应用于命令中的其余部分。我希望能够在 中使用命令,tikzpicture该命令同样会自动将变换应用于所有后续\draw命令,即跨越分号的命令。

例如,考虑以下工作示例:

\documentclass{minimal}
\usepackage{tikz}

\begin{document}
\begin{center}
\begin{tikzpicture}[scale=1.5]
    \foreach \n in {1,...,5}
    {
        \draw[thick,->] (-1.5,0) -- (4.5,0) node[right] {$x$};
        [yshift=-1cm];
    }
\end{tikzpicture}
\end{center}
%
%
\rule{0pt}{2cm}
%
%
\begin{center}
\begin{tikzpicture}[scale=1.5]
    \foreach \n in {0cm,1cm,...,4cm}
    {
        \draw[yshift=\n, thick, ->] (-1.5,0) -- (4.5,0) node[right] {$x$};
    }
\end{tikzpicture}
\end{center}
\end{document}

在此处输入图片描述

第二张图片给出了我想要的结果;第一张图片是我想要使用的代码风格。

有没有办法做到这一点?

答案1

将转换应用于 a 中的所有后续对象的方法之一tikzpicture是使用\every path/.append style={<transformation command>},它会累积您传递给它的选项。要重置它(它最初是空的),您可以调用\tikzset{every path/.style={}}

但是,对于您的情况,还有一个额外的问题:\foreach循环将命令分组,因此对every path样式的更改仅限于循环的每次迭代。如果您仍然坚持使用您的方法,则需要取消循环分组。pgfplots 包提供了一个命令,除了不引入组之外,\pgfplotsforeachungrouped它在各个方面都像普通命令一样工作。\foreach

\documentclass{article}
\usepackage{tikz, pgfplots}


\begin{document}
\begin{center}

\begin{tikzpicture}[scale=1.5]
{
    \pgfplotsforeachungrouped \n in {1,...,5}
    {
        \draw[thick,->] (-1.5,0) -- (4.5,0) node[right] {$x$};
        \tikzset{every path/.append style={yshift=-1cm}}
    }
}
\end{tikzpicture}
\end{center}
\end{document}

相关内容