Warum gibt \StrBehind{\luatexbanner}{Dies ist} einen leeren String zurück?

Warum gibt \StrBehind{\luatexbanner}{Dies ist} einen leeren String zurück?

\luatexbannerdruckt folgenden String: This is LuaTeX, Version 0.95.0 (TeX Live 2016).

Ich möchte mich jedoch ausziehen This is.

Ich habe versucht, \StrBehind{\luatexbanner}{This is }das Paket zu verwenden xstring.

Es wird jedoch nur eine leere Zeichenfolge zurückgegeben. Mein zweiter Versuch war

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

Aber hier keine Veränderung.

Antwort1

\luatexbannergeneriert eine Zeichenfolge mit einem Kategoriencode von 12 Zeichen (Leerzeichen sind weiterhin Kategoriecode 10).

\documentclass{article}
\usepackage{xstring}

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

\begin{document}

\texttt{\mybanner}

\end{document}

Enthält außerdem Zeichen mit dem Kategoriecode 12 \detokenize.This is

Bildbeschreibung hier eingeben

Es ist eine gängige Richtlinie in der TeX-Welt, dass alle auf diese Weise generierten Zeichenfolgen Zeichen mit dem Kategoriecode 12 haben, mit Ausnahme von Leerzeichen, die den Kategoriecode 10 behalten. Das gilt auch für die Zeichenfolgen, die von

\the
\meaning

in klassischem TeX; die von e-TeX, PDFTeX, LuaTeX und XeTeX hinzugefügten folgen denselben Mustern. Dies dient dazu, vorhersehbare Ergebnisse sicherzustellen; andererseits erschwert es manchmal Vergleiche, wie in Ihrem Fall. Mit hat \detokenizee-TeX eine gute Möglichkeit eingeführt, Token in „Strings“ zu zerlegen.

verwandte Informationen