对于手机拍的照片质量稍差的情况,提前致歉:
我想在我正在做的事情中加入一些这样的数字。我刚刚开始学习 tikz,它似乎可以用来做这样的事情,但我现在还不够熟练。
所包含的图片有 16 个单元格,但我还有另一个有 8 个单元格的图形和一个不太重要的有 27 个单元格的图形,因此,如果可以普遍做到这一点,使这些也变得容易,那就太好了。
答案1
下面的宏CircularSequence
采用三个参数:
- 外半径
- 内半径
- 要应用的顺序
它应该能够使用任意数量的元素创建此图像。以下是具有 8 个和 16 个元素的示例:
参考:
代码:
\documentclass{article}
\usepackage{tikz}
\usepackage{xstring}
% https://tex.stackexchange.com/questions/21559/macro-to-access-a-specific-member-of-a-list/21560#21560
\newcommand*\GetListMember[2]{\StrBetween[#2,\number\numexpr#2+1]{,#1,},,\par}%
\newlength{\MidRadius}
\newcommand*{\CircularSequence}[3]{%
% #1 = outer circle radius
% #2 = inner circle radius
% #3 = seqeunce
\StrCount{#3}{,}[\NumberOfElements]
\pgfmathsetmacro{\AngleSep}{360/(\NumberOfElements+1)}
\pgfmathsetlength{\MidRadius}{(#1+#2)/2}
\draw [red, ultra thick] circle (#2);
\draw [blue, ultra thick] circle (#1);
\foreach [count = \Count] \Angle in {0,\AngleSep,..., 360} {%
\draw [gray, ultra thick] (\Angle:#2) -- (\Angle:#1);
\pgfmathsetmacro{\MidPoint}{\Angle+\AngleSep/2}
\node at (\MidPoint:\MidRadius) {\GetListMember{#3}{\Count}};
}%
}%
\begin{document}
\begin{tikzpicture}
\CircularSequence{3.0cm}{2.cm}{1,2,3,4,5,6,7,8}
\begin{scope}[xshift=7.0cm]
\CircularSequence{2.5cm}{1.5cm}{1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8}
\end{scope}
\end{tikzpicture}
\end{document}