提问于:
浏览数:
3188
## 编译环境
操作系统
* [ ] Windows 7/8/10
Tex发行版
* [ ] TexLive `年份`
## 我的问题
\CJKunderline[hidden]{答案},有没有办法能自动的根据(答案的宽度*1.5)来画下划线,
原因是手写体一般比印刷体宽,所以下划线宽度需要预留大一些。
3 回答
2
简单用latex3实现了一下,可选参数是留白的比例
13行那个`>`是>,网页bug
```tex
\documentclass{ctexart}
\usepackage{xeCJKfntef}
\usepackage{xparse}
\usepackage{xstring}
\ExplSyntaxOn
\int_new:N \l_wd_int
\tl_new:N \l_answer_tl
\str_new:N \l_answer_str
\NewDocumentCommand{\answer}{O{0} m}{
\tl_set:Nx \l_answer_tl {#2}
\int_set:Nn \l_wd_int {\fp_eval:n {floor(#1 * \str_count:N \l_answer_tl)}}
\str_set:Nx \l_answer_str {#2}
\int_while_do:nn {\l_wd_int > 0}{
\str_put_right:Nn \l_answer_str {烫}
\int_decr:N \l_wd_int
}
\CJKunderline[hidden]{\l_answer_str}
}
\ExplSyntaxOff
\def\test{答案答案答案答案答案答案答案答案答案答案答案答案答案答案}
\begin{document}
答案:\CJKunderline{\test}
答案:\CJKunderline[hidden]{\test}
答案:\answer{\test}
答案:\answer[0.5]{\test}
答案:\answer[1]{\test}
\end{document}
```
![](https://wenda.latexstudio.net/data/attach/200520/QajLKVWx.png)
0
算出长度来就可以了,参考一下:
[https://latexstudio.net/index/details/index/mid/409.html](https://latexstudio.net/index/details/index/mid/409.html "https://latexstudio.net/index/details/index/mid/409.html")
0
*1.5的部分不会,等别人回答吧
```tex
\documentclass{ctexart}
\usepackage{calc}
\newlength{\daan}
\setlength{\daan}{0pt}
\def\xiedaan#1{\gdef\xiedaana{#1}}
\begin{document}
\xiedaan{答案答案}
\settowidth{\daan}{\xiedaana}
文字\CJKunderline[hidden]{\hspace*{\the\daan}}文字
文字答案答案文字
\end{document}
```
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。