我想根据汉字的字数,将一串汉字转换为一些框,比如下面的代码,“好好学习天天向上”一共有8个汉字,对应的我想替换成八个square。请问是否可以自定义一个命令,可以根据命令变量中字符的个数,生成对应的square?
我浏览了stackexchange,看到一些相关的,但基本上是替换特定符号,我想根据汉字个数生成相应的框,不知道怎么实现,请各位大佬指导一下
\documentclass{ctexart}
\usepackage{amssymb}
\begin{document}
好好学习天天向上
$\square$ $\square$ $\square$ $\square$ $\square$ $\square$ $\square$ $\square$
\mycmd{好好学习天天向上}
\end{document}
你是想做填空题?为何不用下划线呢?
\documentclass{ctexart}
\usepackage{xeCJKfntef}
\begin{document}
\CJKunderline*[thickness=1pt, hidden=true]{瞻彼阕者,虚室生白,吉祥止止}
\end{document}
按照@u14623 的代码,我修改了一下
\int_sub:Nn \l__char_int 1
才是正确的结果\l__char_int
在第二次使用时会重复定义,这是代码写的有问题,放到前面去就好了\documentclass{ctexart}
\usepackage{expl3}
\usepackage{xparse}
\usepackage{l3keys2e}
\usepackage{amssymb}
\begin{document}
\ExplSyntaxOn
\int_new:N \l__char_int
\NewDocumentCommand{\squarechar}{ m }
{
\int_set:Nn \l__char_int {\str_count:n {#1}}
\int_do_while:nn {\l__char_int > 0}
{
$\square$
\int_sub:Nn \l__char_int 1
}
}
\ExplSyntaxOff
\squarechar{好好学习,天天向上}
\squarechar{好好学习}
\squarechar{学习}
\end{document}
\documentclass{ctexart}
\usepackage{expl3}
\usepackage{xparse}
\usepackage{l3keys2e}
\usepackage{amssymb}
\begin{document}
\ExplSyntaxOn
\NewDocumentCommand{\squarechar}{ m }
{
\int_new:N \l__char_int
\int_set:Nn \l__char_int {\str_count:n {#1}}
\int_do_while:nn {\l__char_int > 0}
{
$\square$
\int_sub:Nn \l__char_int 3
}
}
\ExplSyntaxOff
\squarechar{好好学习,天天向上}
\end{document}
这个字符只能输入汉字字符,因为汉字在LaTeX3占的字符数是3个,如果输入英文符号的话会出错,暂时没想到怎么解决,希望能帮到你
是要用符号隐去这些文字,感谢回复~