如何在 LaTeX 3 中创建活动波浪号

如何在 LaTeX 3 中创建活动波浪号

我有一些生成矩阵并使用的 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代替了 ' 2s。日志文件包含以下行:

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}

相关内容