Por que \StrBehind{\luatexbanner}{This is} retorna uma string vazia?

Por que \StrBehind{\luatexbanner}{This is} retorna uma string vazia?

\luatexbannerimprime a seguinte string: This is LuaTeX, Version 0.95.0 (TeX Live 2016).

No entanto, eu quero me despir This is.

Eu tentei \StrBehind{\luatexbanner}{This is }usar o pacote xstring.

No entanto, ele retorna apenas uma string vazia. Minha segunda tentativa foi

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

Mas nenhuma mudança aqui.

Responder1

\luatexbannergera uma string com código de categoria 12 caracteres (espaços ainda são código de categoria 10).

\documentclass{article}
\usepackage{xstring}

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

\begin{document}

\texttt{\mybanner}

\end{document}

Com \detokenizetambém This isconsistirá de caracteres com código de categoria 12.

insira a descrição da imagem aqui

É uma política comum no mundo TeX que todas as strings geradas dessa forma tenham caracteres com código de categoria 12, exceto espaços que permanecem como código de categoria 10. O mesmo ocorre com as strings geradas por

\the
\meaning

no TeX clássico; os adicionados pelo e-TeX, PDFTeX, LuaTeX e XeTeX seguem os mesmos padrões. Isto é para garantir resultados previsíveis; por outro lado, isso às vezes torna mais difícil fazer comparações, como no seu caso. Com \detokenizeo e-TeX introduziu uma boa maneira de “stringificar” tokens.

informação relacionada