我正在用 pstricks 制作图片,并想绘制坐标为分数 a/c、b/c 的点,其中 a、b 和 c 位于特定范围内。我尝试使用 \numexpr,但它会向下舍入。我不会使用 \dimexpr,因为我认为维度(以 pt 或类似符号结尾)不适用于 pstricks 坐标。我尝试使用 pgf,但语法无法正常工作:
\documentclass{article}
\usepackage{amsmath}
\usepackage{pstricks,pst-node,multido}
\RequirePackage{pgf}%
\begin{document}
\psset{xunit=5cm,yunit=5cm}
\begin{pspicture}(0,0)(1,1)
\multido{\iC=1+1}{5}{%
\multido{\iA=0+1}{\iC}{%
\multido{\iB=0+1}{\iC}{%
\pscircle*(\pgfmathparse{\iA/\iC},\pgfmathparse{\iB/\iC}){0.02}
}
}
}
\end{pspicture}
\end{document}
答案1
\documentclass{article}
\usepackage{pstricks,multido}
\begin{document}
\psset{xunit=5cm,yunit=5cm}
\begin{pspicture}(0,0)(1,1)
\multido{\iC=1+1}{5}{%
\multido{\iA=0+1}{\iC}{%
\multido{\iB=0+1}{\iC}{%
\psdot(!\iA\space \iC\space div \iB\space \iC\space div)
}%
}%
}%
\end{pspicture}
\end{document}
或者
\documentclass{article}
\usepackage{pstricks,multido,pst-calculate}
\begin{document}
\psset{unit=8}
\begin{pspicture}(2,2)
\multido{\iC=1+1}{20}{%
\multido{\iA=0+1}{\numexpr\iC+1}{%
\multido{\iB=0+1}{\numexpr\iC+1}{%
\psdot[dotscale=0.5](\pscalculate{\iA/\iC},\pscalculate{\iB/\iC})
}%
}%
}%
\end{pspicture}
\end{document}
答案2
您忘了调用\pgfmathresult
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{pstricks,pst-node,multido}
\RequirePackage{pgf}%
\begin{document}
\psset{xunit=5cm,yunit=5cm}
\begin{pspicture}(0,0)(1,1)
\multido{\iC=1+1}{5}{%
\multido{\iA=0+1}{\iC}{%
\multido{\iB=0+1}{\iC}{%
\pgfmathparse{\iA/\iC}\xdef\myx{\pgfmathresult}
\pgfmathparse{\iB/\iC}\xdef\myy{\pgfmathresult}
\pscircle*(\myx,\myy){0.02}
}
}
}
\end{pspicture}
\end{document}
只是出于好奇,你能否也添加你的 Ti钾Z 示例?我对您收到的错误有点惊讶。
更新:使用 Ti 执行此操作时我没有遇到任何问题钾Z,其中代码更短,不需要任何包并且编译更方便(尽管我真的很喜欢 PSTricks)。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=10]
\foreach \iC in {1,...,15}{%
\foreach \iA in {0,...,\iC}{%
\foreach \iB in {0, ...,\iC}{%
\draw[fill=black] ({\iA/\iC},{\iB/\iC}) circle (0.002);
}
}
}
\end{tikzpicture}
\end{document}
答案3
另提供元帖子,这里包裹在luamplib
编译中lualatex
或弄清楚如何适应它良好生产规范或普通 MP。
我也添加了一点颜色。
\documentclass[border=5mm]{standalone}
\usepackage{luatex85, luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
n = 25;
for i = 1 upto n:
for j = 0 upto i:
for k = 0 upto i:
fill fullcircle
scaled 3
shifted ((j/i, k/i) scaled (n*cm))
withcolor 3/4(j/i, k/i, i/n);
endfor
endfor
endfor
endfig;
\end{mplibcode}
\end{document}