我遇到了一个问题,pgfplots
似乎无法使用tikz
。 下面是一个 MWE。 我收到错误消息,表示div
尚未实现,这当然不是真的。 如果我注释掉我标记的行,一切都会好起来。
这是 MiKTeX 2.9,所有软件包均已更新。
我发现这篇旧文章和这个这两个似乎都处理相同的问题,但我不知道如何将那里显示的解决方案应用于我的问题。我没有(至少没有明确地)在任何地方使用 FPU 库,是吗?
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots} % <- here's the culprit
\begin{document}
\begin{tikzpicture}[xscale=.8, yscale=-0.8]
\foreach \n in {2, ..., 118} {
\pgfmathsetmacro{\x}{mod(int(\n - 2),13)}
\pgfmathsetmacro{\y}{div(int(\n - 2),13)}
\pgfmathsetmacro{\c}{ifthenelse(isprime(\n),10,0)}
\fill[black!\c!white] (\x,\y) rectangle +(.85cm,.6cm);
}
\end{tikzpicture}
\end{document}
答案1
根据此问答:'pgfplots' 包的存在会破坏启用了 'folder' 选项的 'forest' 环境(由于 FPU)我得到以下解决方案:
代替
\usepackage{pgfplots}
和
\makeatletter
\let\pgfmathdivX=\pgfmathdiv@
\let\pgfmathisprimeX=\pgfmathisprime@
\usepackage{pgfplots}
\let\pgfmathdiv@=\pgfmathdivX
\let\pgfmathisprime@=\pgfmathisprimeX
\makeatother
实际上,div
如果表达式写为int(\n - 2)/13
而不是,则可以省略 部分div(int(\n - 2),13)
。
梅威瑟:
\documentclass{article}
\usepackage{tikz}
\makeatletter
\let\pgfmathisprimeX=\pgfmathisprime@
\usepackage{pgfplots}
\let\pgfmathisprime@=\pgfmathisprimeX
\makeatother
\begin{document}
\begin{tikzpicture}[xscale=.8, yscale=-0.8]
\foreach \n in {2, ..., 118} {
\pgfmathsetmacro{\x}{mod(int(\n - 2),13)}
\pgfmathsetmacro{\y}{int(\n - 2)/13}
\pgfmathsetmacro{\c}{ifthenelse(isprime(\n),10,0)}
\fill[black!\c!white] (\x,\y) rectangle +(.85cm,.6cm);
}
\end{tikzpicture}
\end{document}