為什麼 \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 引入了一種「字串化」標記的好方法。

相關內容