相关链接:
\documentclass[tikz,border=2pt]{standalone}
\usepackage{ctex}
\usepackage{graphicx}
\usepackage{circledtext}
\begin{document}
\tikz{
\foreach \x in {0,...,9} {
\node
at (\x,0)
[scale=2.75]
{\circledtext{\x}};
}
\foreach \x in {10,...,19} {
\node
at (\x-10,1)
[scale=2.75]
{\circledtext{\scalebox{1.25}[2]{\x}}};
}
\foreach \x in {20,...,29} {
\node
at (\x-20,2)
[scale=2.75]
{\circledtext{\scalebox{1.25}[2]{\x}}};
}
\foreach \x in {30,...,39} {
\node
at (\x-30,3)
[scale=2.75]
{\circledtext{\scalebox{1.25}[2]{\x}}};
}
\foreach \x in {40,...,49} {
\node
at (\x-40,4)
[scale=2.75]
{\circledtext{\scalebox{1.25}[2]{\x}}};
}
\foreach \x in {50,...,59} {
\node
at (\x-50,5)
[scale=2.75]
{\circledtext{\scalebox{1.25}[2]{\x}}};
}
\foreach \x in {60,...,69} {
\node
at (\x-60,6)
[scale=2.75]
{\circledtext{\scalebox{1.25}[2]{\x}}};
}
\foreach \x in {70,...,79} {
\node
at (\x-70,7)
[scale=2.75]
{\circledtext{\scalebox{1.25}[2]{\x}}};
}
\foreach \x in {80,...,89} {
\node
at (\x-80,8)
[scale=2.75]
{\circledtext{\scalebox{1.25}[2]{\x}}};
}
\foreach \x in {90,...,99} {
\node
at (\x-90,9)
[scale=2.75]
{\circledtext{\scalebox{1.25}[2]{\x}}};
}
}
\tikz{
\foreach \x in {100,...,109} {
\node
at (\x-100,10)
[scale=2.75]
{\circledtext{\scalebox{1}[2]{\x}}};
}
\foreach \x in {110,...,119} {
\node
at (\x-110,11)
[scale=2.75]
{\circledtext{\scalebox{1}[2]{\x}}};
}
\foreach \x in {120,...,129} {
\node
at (\x-120,12)
[scale=2.75]
{\circledtext{\scalebox{1}[2]{\x}}};
}
\foreach \x in {130,...,139} {
\node
at (\x-130,13)
[scale=2.75]
{\circledtext{\scalebox{1}[2]{\x}}};
}
\foreach \x in {140,...,149} {
\node
at (\x-140,14)
[scale=2.75]
{\circledtext{\scalebox{1}[2]{\x}}};
}
\foreach \x in {150,...,159} {
\node
at (\x-150,15)
[scale=2.75]
{\circledtext{\scalebox{1}[2]{\x}}};
}
\foreach \x in {160,...,169} {
\node
at (\x-160,16)
[scale=2.75]
{\circledtext{\scalebox{1}[2]{\x}}};
}
\foreach \x in {170,...,179} {
\node
at (\x-170,17)
[scale=2.75]
{\circledtext{\scalebox{1}[2]{\x}}};
}
\foreach \x in {180,...,189} {
\node
at (\x-180,18)
[scale=2.75]
{\circledtext{\scalebox{1}[2]{\x}}};
}
\foreach \x in {190,...,199} {
\node
at (\x-190,19)
[scale=2.75]
{\circledtext{\scalebox{1}[2]{\x}}};
}
}
\end{document}
差不多就是小学生找规律问题((^_^))
07 -> (7,0)
23 -> (3,2)
152 -> (2,5)
使用取模和向下取整的函数即可,规律是显然的。
先把「10-99」缩为一重循环;再把「100-199」也缩为一重循环即可
\documentclass[tikz,border=2pt]{standalone}
\usepackage{ctex}
\usepackage{circledtext}
\begin{document}
\tikz{
\foreach \x in {0,...,9} {
\node[scale=2.75] at (\x,0) {\circledtext{\x}};
}
\foreach \x in {10,...,99}{%
\pgfmathtruncatemacro{\xx}{mod(\x,10)}
\pgfmathtruncatemacro{\yy}{floor(\x/10)}
\node[scale=2.75] at (\xx,\yy) {\circledtext{\scalebox{1.25}[2]{\x}}};
}%
}
\tikz{
\foreach \x in {100,...,199}{%
\pgfmathtruncatemacro{\xx}{mod(\x-100,10)}
\pgfmathtruncatemacro{\yy}{floor((\x-100)/10)}
\node[scale=2.75] at (\xx,\yy) {\circledtext{\scalebox{1}[2]{\x}}};
}%
}
\end{document}
根据数字的位数使用一个分支判断。这样可以把三个循环再缩为一个。
这里我不希望把0-199的数字拆分为两个tikzpicture
,所以我稍微修改了一下逻辑和目标效果。
\documentclass[tikz,border=2pt]{standalone}
\usepackage{ctex}
\usepackage{circledtext}
\begin{document}
\tikz{
\foreach \x in {0,...,299} {
\pgfmathtruncatemacro{\xx}{mod(\x,10)}
\pgfmathtruncatemacro{\yy}{floor(\x/10)}
\ifnum\yy<1\relax
\def\content{\x}
\else%
\ifnum\yy<10\relax
\def\content{\scalebox{1.25}[2]{\x}}
\else
\def\content{\scalebox{1}[2]{\x}}
\fi
\fi
\node[scale=2.75] at (\xx,\yy) {\circledtext{\content}};
}%
}
\end{document}
连
mod
和floor
是什么都不知道的我,还不会写条件判断,这个循环对我来说有点难了...@u101077
取模
mode
(%
)就是取余数啦..至于
floor
,就是向下取整而已..或许你听说过高斯函数...
@u101077 不想计算套个双重循环就行了,外层是纵坐标,内层是横坐标,内容直接拼接即可,清晰明了,借@u70550 的代码改了改。