提问于:
浏览数:
1610
## 编译环境
操作系统
* [x] Windows 10
* [ ] macOS
* [ ] Linux
`若需勾选,请把[ ]改成[x]`
Tex发行版
* [x] TexLive 2020
* [ ] MikTeX `版本号`
* [ ] CTeX
`若需勾选,请把[ ]改成[x]`
## 我的问题
`axis` 环境的某些可选参数令 `\foreach` 命令不工作。
```tex
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=middle,
xmin=0,
xmax=5,
ymin=0,
ymax=5,
xtick={1,2,3,4},
ytick={1,2,3,4},
]
\foreach \i in {1,...,4} {
\foreach \j in {1,...,4} {
\fill (\i,\j) circle (1pt);
};
};
\end{axis}
\end{tikzpicture}
\end{document}
```
1 回答
0
`axis` 环境中的循环结构会在 `\end{axis}` 之后求值,所以它的值会丢掉。所以要用一些其他手段:
```
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=middle,
xmin=0,
xmax=5,
ymin=0,
ymax=5,
xtick={1,2,3,4},
ytick={1,2,3,4},
]
\foreach \i in {1,...,4} {
\foreach \j in {1,...,4} {
\edef\temp{\noexpand\fill (axis cs:\i,\j) circle (1pt);}
\temp
}
}
\end{axis}
\end{tikzpicture}
\end{document}
```
参考来源:
> `PGFPLOTS` 手册 8.1 Utility Commands
> [\foreach not behaving in axis environment](https://tex.stackexchange.com/questions/170664/foreach-not-behaving-in-axis-environment "\foreach not behaving in axis environment")
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。