为什么 \StrBehind{\luatexbanner}{This is} 返回一个空字符串?

为什么 \StrBehind{\luatexbanner}{This is} 返回一个空字符串?

\luatexbanner打印以下字符串: This is LuaTeX, Version 0.95.0 (TeX Live 2016)

可是,我想脱掉This is

我已尝试\StrBehind{\luatexbanner}{This is }使用该包xstring

但是,它只返回一个空字符串。我的第二次尝试是

\StrExpand[10]{\luatexbanner}{\mystring}\mystring\\
\StrBehind{\mystring}{This is }

但这里没有变化。

答案1

\luatexbanner生成一个类别代码为 12 个字符的字符串(空格仍为类别代码 10)。

\documentclass{article}
\usepackage{xstring}

\StrBehind{\luatexbanner}{\detokenize{This is }}[\mybanner]

\begin{document}

\texttt{\mybanner}

\end{document}

\detokenize将由This is类别代码为 12 的字符组成。

在此处输入图片描述

TeX 世界中的一项常见政策是,以这种方式生成的所有字符串都包含类别代码为 12 的字符,但空格除外,其类别代码仍为 10。由

\the
\meaning

在传统 TeX 中;e-TeX、PDFTeX、LuaTeX 和 XeTeX 添加的标记遵循相同的模式。这是为了确保结果可预测;另一方面,这有时会使进行比较变得更加困难,就像你的情况一样。借助\detokenize,e-TeX 引入了一种“字符串化”标记的好方法。

相关内容