% !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字体):
考虑到几乎没人会排版一个1000以上的带圈数字,所以就不考虑四位以上的带圈数字的情况(可能处理方式类似,希望暴露接口)。要满足这些要求,应该如何实现?
可以在y轴方向上缩放一点,让数字字符拉高/低一点
可以在x轴方向上缩放一点,让数字字符拉宽/瘦一点,以上这是两位数字的情况
当三(多)位数字时,在x轴方向上,数字字符可以再瘦一点,在y轴方向上,与两位数字的情况保持一致
其中「三(多)位数字」要「在y轴方向上,与两位数字的情况保持一致」,这样「2」似乎就会被拉长得的又高又瘦(?)个人觉得略显奇怪...
如果只是要调大小的话,也许可以用charshrink
来改善「222
文字太小」的问题:
\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}
side-notes:
pdflatex
编译ctexart
xe
或lua
,则无需显式写出UTF8
,早已是默认值感谢@u19850 鱼老师...
可以考虑用下面的方式实现将三个命令封装为一个...
我就是想要那种又高又瘦、占满圆圈的感觉,而
charshrink
是整体缩放,希望可以像graphicx
包里的\scalebox
一样,自由设置水平和垂直方向的缩放程度。另,mwe
中pdflatex
是为了更快地获得测试结果(xelatex
慢得要死),加上UTF8
是为了让pdflatex
不要弹出与编码相关的警告/信息......@u101077 我发现
\circledtext{...}
命令里的参数可以直接先使用\scalebox
作了缩放处理再添加外圆啊...无了个大语...@u101077
理解hhh 但这与「side-notes」的内容并不矛盾
也许你可以自答一下(?)