¿Por qué \StrBehind{\luatexbanner}{Esto es} devuelve una cadena vacía?

¿Por qué \StrBehind{\luatexbanner}{Esto es} devuelve una cadena vacía?

\luatexbannerimprime la siguiente cadena: This is LuaTeX, Version 0.95.0 (TeX Live 2016).

Sin embargo, quiero desnudarme This is.

Intenté \StrBehind{\luatexbanner}{This is }usar el paquete xstring.

Sin embargo, sólo devuelve una cadena vacía. Mi segundo intento fue

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

Pero aquí no hay cambios.

Respuesta1

\luatexbannergenera una cadena con código de categoría de 12 caracteres (los espacios siguen siendo el código de categoría 10).

\documentclass{article}
\usepackage{xstring}

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

\begin{document}

\texttt{\mybanner}

\end{document}

Con \detokenizetambién This isestará formado por caracteres con código de categoría 12.

ingrese la descripción de la imagen aquí

Es una política común en el mundo TeX que todas las cadenas generadas de esa manera tengan caracteres con el código de categoría 12, excepto los espacios que siguen siendo el código de categoría 10. También lo son las cadenas generadas por

\the
\meaning

en TeX clásico; los agregados por e-TeX, PDFTeX, LuaTeX y XeTeX siguen los mismos patrones. Esto es para garantizar resultados predecibles; por otro lado, esto hace que a veces sea más difícil hacer comparaciones como en su caso. Con \detokenize, e-TeX introdujo una buena forma de "encadenar" tokens.

información relacionada