我就是无法调试这段代码。排版后,它一直给出错误:“未定义的控制序列”当为每组坐标单独编码矩形时,代码虽然可以工作,但它仍然很麻烦...我在 \foreach 和 \draw 中遗漏了什么???
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin = 0,
xmax = 10,
ymin = 0,
ymax = 10,
]
\foreach \linker / \regter in {{(1,1) / (2,2)}, {(2,2) / (3,3)},{(3,3)/(4,4)}} {
\edef\temp{\draw[thick] \linker rectangle \regter;
}
\temp
}
\end{axis}
\end{tikzpicture}
\end{document}
答案1
您可以移动\draw
外部\foreach
,然后就不需要使用扩展:
笔记:
通常需要使用
axis cs:
坐标系之内环境axis
。但是,正如 Manuel 所评论的那样,在 pgfplots 版本 1.11 中,这现在是默认坐标系。因此,如果使用版本事先的每个1.11
坐标需要指定为\foreach \linker / \regter in { {(axis cs:1,1) / (axis cs:2,2)}, {(axis cs:2,2) / (axis cs:3,3)}, {(axis cs:3,3) / (axis cs:4,4)}} { \linker rectangle \regter };
代码:
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin = -1,
xmax = 10,
ymin = -1,
ymax = 10,
]
\draw[thick,blue]
\foreach \linker / \regter in {
{(1,1) / (2,2)},
{(2,2) / (3,3)},
{(3,3) / (4,4)} }
{
\linker rectangle \regter
};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
我猜你的问题是逗号。逗号分隔元组,因此如果一个参数中有逗号,则应该用花括号将其括起来。对我来说,此代码有效。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
% \pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin = 0,
xmax = 10,
ymin = 0,
ymax = 10,
]
\end{axis}
\foreach \linker / \regter in {%
{(1,1)}/{(2,2)}, %
{(2,2)}/{(3,3)}, %
{(3,3)}/{(4,4)}%
} { \draw[thick] \linker rectangle \regter; }
\end{tikzpicture}
\end{document}
答案3
问题在于;在它前面\draw
加上:\edef
\noexpand
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin = 0,
xmax = 10,
ymin = 0,
ymax = 10,
]
\foreach \linker / \regter in {{(1,1) / (2,2)}, {(2,2) / (3,3)},{(3,3)/(4,4)}} {
\edef\temp{\noexpand\draw[thick] \linker rectangle \regter;}\temp
}
\end{axis}
\end{tikzpicture}
\end{document}