原始代码报错是因为 \nolinebreak
只能在水平模式使用, 而段首是垂直模式.几个注意的点:
- 并不需要启用 expl3 环境;
- 普通用户在导言区一般不使用
\RequirePackage
, 而是\usepackage
命令; - 在如今,
g
参数不推荐使用, 类似的还有G
,l
,u
; - 不需要同时加载
color
和xcolor
, 单独一个xcolor
已经足够.
修改后的代码如下:
\documentclass[a4paper]{ctexart}
\usepackage{xcolor}
\NewDocumentCommand \hh{m}{%
\IfNoValueTF{#1}{%
\,\underline{\hbox to 1cm{}}\,
}{%
\textcolor[rgb]{1.00,0.00,0.00}{\underline{#1}}%
}%
}
\def\modeCheck{\ifvmode Vmode \else Hmode \fi}
\begin{document}
删除这一行汉字会运行出错\hh{123}
\hh{123}
\modeCheck\modeCheck
\end{document}
运行结果:
问 自定义下划线命令来输出填空题答案,当命令前无字符时运行出错