\documentclass{book}
\begin{document}
\edef\s{0,45,...,360}
\s
\end{document}
在 LaTeX 中,我不知道如何使数组从 0 开始,增量为 45,以 360 结束。我尝试编写上述代码 [我从\foreach
命令中猜测],但结果不合适。如何编写?
编辑
首先我尝试以中心 (0,0) 和半径 3 绘制圆。
然后我画一个圆心为 (3,0) 半径为 3*1/(2+sqrt(2)) 的圆,并根据角度序列 = {0, 45, 90, 135, 180, 225, 270, 315, 360} 旋转它。我可以用以下代码来实现:
\documentclass[a4paper,oneside,12pt]{book}
\usepackage[left=3cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{tikz}
\usepackage{xfp}
\usetikzlibrary{arrows.meta,shapes.arrows}
\begin{document}
\def\angle{{0,45,90,135,180,225,270,315,360}}
\def\radius{3}
\edef\s{\fpeval{(1/(2+sqrt(2)))}}
\begin{tikzpicture}
\draw[fill=none, thick] (0,0) circle (\radius);
\foreach \i in {0,1,...,7}
{
\draw[fill=none, thick, rotate around={{\angle[\i]}:(0,0)} ] (\radius,0) circle ( {\radius*\s^1} ) ;
}
\draw[fill=none, thick] (0,0) circle ( {\radius*\s^1} ) ;
\end{tikzpicture}
\end{document}
我手动定义序列角度。
\def\angle{{0,45,90,135,180,225,270,315,360}}
如果序列元素数量较多,逐个写入元素不是一个好主意。
现在我的问题是:我们可以在乳胶中定义序列,而不是手动逐个写入元素吗?我想让序列从 0 开始,以 360 结束,增量为 45。
答案1
通过使用极坐标和最新的tikz
绘制圆的语法,您的 MWE 可以简化为:
%\documentclass[a4paper,oneside,12pt]{book}
%\usepackage[left=3cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\documentclass[margin=3mm,12pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
shapes.arrows % not used in this MWE
}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\R}{3}
\pgfmathsetmacro{\r}{\R*(1/(2+sqrt(2)))}
\draw[thick] (0,0) circle [radius=\R]
circle [radius=\r];
\foreach \i in {0,1,...,7}
\draw (\i*45:\R) circle [radius=\r];
\end{tikzpicture}
\end{document}