\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

しかし、空の文字列しか返ってきません。2回目の試みは

\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}

また\detokenizeThis isカテゴリ コード 12 の文字で構成されます。

ここに画像の説明を入力してください

TeXの世界では、このように生成されたすべての文字列はカテゴリコード12の文字を持つのが一般的です。ただし、カテゴリコード10のままのスペースは例外です。

\the
\meaning

古典的な TeX では、e-TeX、PDFTeX、LuaTeX、XeTeX によって追加されたものは同じパターンに従います。これは、予測可能な結果を​​保証するためです。一方で、これにより、あなたの場合のように比較が難しくなる場合があります。 により\detokenize、e-TeX はトークンを「文字列化」する優れた方法を導入しました。

関連情報