10 circledtext包中的带圈阿拉伯数字,如何缩放数字而仍保持正圆? 6天19时19分35秒

发布于 2025-08-15 11:59:53

微信图片_20250815115831.png

% !TeX program = xelatex
\documentclass[UTF8]{ctexart}
\usepackage[centering,scale=0.85,papersize={10.5cm,14.85cm},showframe]{geometry}
\usepackage{tikz}
\usepackage{circledtext}
\begin{document}
\circledtext{2}\circledtext{22}\circledtext{222}
\tikz{\node [scale=5] {\circledtext{2}\circledtext{22}\circledtext{222}}}
\end{document}

\circledtext{<arabic number>}这个命令给出了一个所谓具有“字符压缩”效果的带圈数字,但是我发现其实只有个位数字效果较好。因为个位数字本身只有一个字符,所占位置较小,而它的数字的缩放比例又较大,所以最终看起来就感觉个位数字在这个命令下比较饱满,圆圈内不会留下太多空白。

然而,当这个数字变成两(三、多)位数字时,例如\circledtext{22}\circledtext{222}就会显得数字很小,而圆圈内的空白较多,显得不够饱满,有点浪费圆圈内的版面。个人感觉,这个所谓“字符压缩”效果是将数字所在的矩形盒子内接于外部的圆圈,这样的结果就是看起来(在cmu字体下)数字具有了被压缩而变小的感觉。

为了使圆圈内的空白稍小、目视感觉“饱满”,我希望可以为内部的矩形盒子的高度和宽度提供缩放接口,具体来说就是阿拉伯数字(cmu字体):

  1. 可以在y轴方向上伸长一点,让数字字符拉高一点,
  2. 可以在x轴方向上,总宽度伸长一点,每一个数字字符(可以)变瘦一点,以上这是两位数字的情况,
  3. 当三(多)位数字时,在x轴方向上,每一个数字字符可以再变瘦一点,在y轴方向上,高度与两位数字的情况保持一致,
  4. 而外部的圆圈始终保持正圆,不要椭圆,且数字字符不应超出圆圈的边界。

考虑到几乎没人会排版一个1000以上的带圈数字,所以就不考虑四位以上的带圈数字的情况(可能处理方式类似,希望暴露接口)。要满足这些要求,应该如何实现?

查看更多

关注者
0
被浏览
42
1 个回答
Sagittarius Rover
Sagittarius Rover 4小时前
我要成为Typst糕手/(ㄒoㄒ)/~~
可以在y轴方向上缩放一点,让数字字符拉高/低一点
可以在x轴方向上缩放一点,让数字字符拉宽/瘦一点,以上这是两位数字的情况
当三(多)位数字时,在x轴方向上,数字字符可以再瘦一点,在y轴方向上,与两位数字的情况保持一致

其中「三(多)位数字」要「在y轴方向上,与两位数字的情况保持一致」,这样「2」似乎就会被拉长得的又高又瘦(?)个人觉得略显奇怪...

没完全解决上面的需求

如果只是要调大小的话,也许可以用charshrink来改善「222文字太小」的问题:

image.png

\documentclass{ctexart}
\usepackage{tikz}
\usepackage{circledtext}
\newcommand*{\mysingle}[1]{\circledtext[charshrink=.8]{#1}}
\newcommand*{\mydouble}[1]{\circledtext[charshrink=.85]{#1}}
\newcommand*{\mytriple}[1]{\circledtext[charshrink=.92]{#1}}

\begin{document}
\circledtext{2}\circledtext{22}\circledtext{222}

\tikz{\node[scale=5] {\circledtext{2}\circledtext{22}\circledtext{222}};}

\mysingle{2}\mydouble{22}\mytriple{222}

\tikz{\node[scale=5] {\mysingle{2}\mydouble{22}\mytriple{222}};}

\end{document}

image.png

side-notes:

  • 不建议用pdflatex编译ctexart
  • 若使用xelua,则无需显式写出UTF8,早已是默认值

感谢@u19850 鱼老师...
可以考虑用下面的方式实现将三个命令封装为一个...

image.png

撰写答案 当前问题悬赏金额为¥10 元,被提问者采纳后将获得赏金

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览