在 LaTeX 中创建带增量的数组

在 LaTeX 中创建带增量的数组
\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}

在此处输入图片描述

答案2

嗯...正在寻找这样的东西吗?

\documentclass{book}
\usepackage{tikz}%
\begin{document}
    \edef\s{0,45,...,360}
    \foreach \i in \s {
        \tikz \node[draw, rotate=\i]{\i};
    }
\end{document}

在此处输入图片描述

但请注意,这不是数组;它是随后由宏解释的\s字符串。0,45,...,360\foreach

相关内容