例如,我想输入余\quad 华
,就是在“余”和“华”中间插入一个空格,比较朴素的想法是把“余”当作#1,把“华”当作#2,这样的命令就需要两个参数,形如\mycmd{余}{华}
,在写文档时,就必须将人名拆开,可能影响写作思路。
于是就有需求:只需要输入“余华”,然后这个命令自动在中间插入一个空格。形如\mycmd{余华}
,直接得到结果余\quad 华
。
考虑到这个命令专门用来输入那些只有两个字的中文人名,即单姓加单名,所以不会考虑含有西文、三字人名、复姓等复杂情况。
联想到\frac{1}{2}
其实等同于\frac12
。于是其实本质上还是需要两个参数。但是并不想在键入命令时麻烦地输入两个参数。
提问中说专用来输入二字人名,是最简单的情况!
您前面三个问题我都没看懂,是不是理解的太复杂了?
@u101077 类似,但这种可能报 warning,xecjk 的环境才不会。“汉字”也可以是计算为汉字的东西,还可以包含
\bfseries
等复杂的内容。@u10307 什么是“计算为汉字”?
@u101077 比如把两个汉字保存到命令中,或者使用
\char
,\char_generate:nn
等,它们最终都可以变为汉字,但却不能直接当做两个汉字处理。@u10307 测试了下,确实。比如我输入
\def\myname{余华}\makebox[3em][s]{\myname}是我文学上的老师。
会得到Underfull \hbox (badness 10000)
。