我对 tikz 还很陌生,我正在尝试绘制一个圆,圆上有规则的点。如果我要求小于或等于 46 个点,我的代码就可以正常工作。对于更多的点,一切都出错了(点的位置错误),但编译时没有错误消息。
这是我的代码:
\documentclass[french,12pt]{article} % I'm in France.
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\geometry{top=1.5cm,bottom=1.5cm,left=1.5cm,right=1.5cm}
\usepackage[french]{babel}
\usepackage{pgfplots}
\usetikzlibrary{calc,quotes,arrows}
\usepackage{fancyhdr}
\usepackage{graphicx}
\pagestyle{empty}
\begin{document}
\sffamily
\newcommand{\rayon}{5cm} % Rayon du cercle en cm (radius of the circle)
\newcommand{\nbPt}{46} % Nombre de points sur le cercle (Number of points on the circle)
\pgfmathsetmacro{\nb}{\nbPt-1}
\begin{center}
\begin{tikzpicture}
\draw(0,0) circle (\rayon); % Tracer le cercle (Draw the circle)
\foreach \i in {0,1,...,\nb} {
\pgfmathsetmacro{\angle}{360*\i/\nbPt};
\draw(\angle:\rayon) node{+}; \draw(\angle:\rayon*1.08) node{\i};
}
\end{tikzpicture}
\end{center}
\end{document}
我可能犯了一些错误,但我找不到错误在哪里。如果有人能给我一些帮助就太好了。
谢谢。
答案1
问题是pgf
使用 TeX 尺寸进行数学运算。它可以处理的最大尺寸是16383.99998 pt
(TeX 的最大尺寸)。因此,您必须更改此计算的顺序\pgfmathsetmacro{\angle}{360*\i/\nbPt};
。先除以,\nbPt
然后乘以,\i
或者只需在两边加上两个括号,(\i/\nbPt)
以避免尺寸过大。
\documentclass[french,12pt]{article} % I'm in France.
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\geometry{top=1.5cm,bottom=1.5cm,left=1.5cm,right=1.5cm}
\usepackage[french]{babel}
\usepackage{tikz}
\usetikzlibrary{calc,quotes,arrows}
\usepackage{fancyhdr}
\usepackage{graphicx}
\pagestyle{empty}
\begin{document}
\sffamily
\newcommand{\rayon}{5cm} % Rayon du cercle en cm (radius of the circle)
\newcommand{\nbPt}{60} % Nombre de points sur le cercle (Number of points on the circle)
\pgfmathsetmacro{\nb}{\nbPt-1}
\begin{center}
\begin{tikzpicture}
\draw(0,0) circle (\rayon); % Tracer le cercle (Draw the circle)
\foreach \i in {0,1,...,\nb} {
\pgfmathsetmacro{\angle}{360/\nbPt*\i};
\draw(\angle:\rayon) node{+}; \draw(\angle:\rayon*1.08) node{\i};
}
\end{tikzpicture}
\end{center}
\end{document}