用 luatex 替换 # 字符

用 luatex 替换 # 字符

下面的最小示例应将所有 # 字符替换为另一个符号。如果我使用\#它来转义它,效果很好,但用户稍后应该能够直接输入它,例如输入哈希标签。

我知道#是一个特殊字符,但我想要一个不需要修改字符类和修补宏的解决方案(我们同时需要#作为特殊字符来获取参数值)。

仅供参考:此包的总体目标是创建“在 Twitter 上分享”链接。

\documentclass{minimal}

\usepackage{luacode}

\newcommand{\Test}[1]{
    \luaexec{
        local x = string.gsub("#1", "\#", "+")
        tex.print(x)
    }
}

\begin{document}
\Test{With backslash: \#} % Yields "Wit backslash: +"

\Test{Without backslash: #} % Yields "Without backslash: + +"
\end{document}

答案1

您应该在宏中##写入:\#

示例输出

\documentclass{minimal}

\usepackage{luacode}

\newcommand{\Test}[1]{
    \luaexec{
        local x = string.gsub("#1", "##", "+")
        tex.print(x)
    }
}

\begin{document}
\Test{With backslash: \#} % Throws an error as # is not processable in output

\Test{Without backslash: #} % 
\end{document}

相关内容