\xdef 中的 \mathbb 出現奇怪的錯誤

\xdef 中的 \mathbb 出現奇怪的錯誤

在開發一段複雜的程式碼時,我遇到了以下神秘錯誤:

./[email protected]:5: Undefined control sequence.
\GenericError  ...                                
                                                    #4  \errhelp \@err@     ...
l.5 ...w@thmref@thm:defi:DistRn\endcsname{$\mathbb
                                                  {R}$}

通過“二分查找”,我意識到這是由於以下原因:

\documentclass[a4paper]{report}
\usepackage{amsfonts}

\begin{document}
\expandafter\xdef\csname mw@thmref@thm:defi:DistRn\endcsname{$\mathbb{R}$}
\end{document}

那變成\xdef使它\gdef消失了。所以我很好奇,就來這裡問:這是怎麼回事,這個錯誤又是什麼意思?

答案1

Latex 中不支援指令是有原因的\xdef,大多數 tex 結構都會在 edef 中爆炸。使用 \protected@edef然後用於\protect任何脆弱的命令。

如果你走的話

\edef\foo{\def\zzz{hello}}

然後它在定義 時嘗試(僅)擴展標記\foo\def不可擴展,因此保留原樣,然後它嘗試擴展\zzz,然後通常會給出未定義的命令錯誤(或者如果\zzz已經有定義,則擴展該定義會出現任意錯誤)。這就是乳膠機制的全部原因\protect\xdef直接使用只會將其炸出一個洞。

日誌輸出看起來有點奇怪的原因是它揭示(或試圖揭示)具有有趣名稱的內部令牌

 \@err@                                                                 %

這是一個名稱中有 65 個左右空格的令牌,

相關內容