我有一些生成矩阵并使用的 LaTeX3 代码线包内部。在 LaTeX3 中,该~
字符是一个特殊字符,用于在字符串中插入空格,并使用\c_tilde_str
结果线忽略该角色并发出警告:
Package hhline Warning: macro:->~ ignored in \hhline argument
我尝试过各种技巧,例如定义
\cs_new_protected:Npn \__active_tilde { \~ }
\group_begin:
\char_set_active_eq:nN {`~} \__active_tilde
\group_end:
然后使用\__active_tilde
但这也不起作用。
这是一个展示我的问题的最小工作示例:
\documentclass{article}
\usepackage{hhline}
\usepackage{expl3}
\ExplSyntaxOn
\newcommand\mat{
\typeout{----------------------------------------}
\begin{array}{cc} \hhline{~-} 1&2 \end{array}
\typeout{----------------------------------------}
\begin{array}{cc} \hhline{\c_tilde_str-} 1&2 \end{array}
\typeout{----------------------------------------}
}
\ExplSyntaxOff
\begin{document}
$\mat$
\end{document}
这将产生输出
用上划线1
代替了 ' 2
s。日志文件包含以下行:
Package hhline Warning: macro:->~ ignored in \hhline argument
(hhline) on input line 24.
这表明第一个被忽略了,因为在代码中是一个空格,~
所以 理应如此,而 并没有被 识别为。~
expl
\c_tilde_str
~
hhline
[我知道该tabularray
软件包提供了其他方法来做到这一点,但它在我的实际用例中不起作用,因为它不支持其键值语法的扩展 - 并且对于我需要生成的表的数量可能存在其他性能问题...]
答案1
就像是
\documentclass{article}
\usepackage{hhline}
\let\foo~
\usepackage{expl3}
\ExplSyntaxOn
\newcommand\mat{
\typeout{----------------------------------------}
\begin{array}{cc} \hhline{\foo-} 1&2 \end{array}
\typeout{----------------------------------------}
\begin{array}{cc} \hhline{\foo-} 1&2 \end{array}
\typeout{----------------------------------------}
}
\ExplSyntaxOff
\begin{document}
$\mat$
\end{document}