\draw
TikZ 的一个不错的功能是,您可以在命令(或等)中间应用坐标变换\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}