代码很短
\documentclass{ctexart}
\begin{document}
你\underline{好}世界
\end{document}
\documentclass{ctexart}
\begin{document}
hello\underline{word}helloword
\end{document}
英文不会发生
看看下面代码:
\documentclass[fntef]{ctexart}
\begin{document}
你\CJKunderline{好}世界
你\underline{好}\mbox{}世界
你\underline{好}世界
\end{document}
\underline{好}
被当作一种不完全的西文了,以你的 mwe 来说,在 pdflatex 和 xelatex 两种编译器下的表现不同可以看出:
xelatex
pdflatex
原因大致同 @u70550 说的类似,不过为什么好
的前面也是汉字却不保留空格,这似乎也是 ctex
文档类的某种行为。
更应该用
xeCJKfntef
提供的高级命令\CJKunderline
至于为什么「英文不会但中文会多出额外的空格」
做一个猜测..
xeCJK
会自动在中文和西文之间自动添加空格(a.k.a. 盘古之白),而\underline{好}
被视为一个「西文」的整体了..我们可以尝试用下面的例子来验证这一点
这次提问的质量高了很多,代码不再有大量无关内容了,赞👍!