仅当 \luaexec tex.sprint 位于 \chapter 命令内部时,才会出现错误消息““\%”附近的转义序列无效”:为什么?
\documentclass{book}
\usepackage{luacode}
\begin{document}
\def\CalculusResult{
\luaexec{Calculus = 1/3 tex.sprint (string.format("\%0.5f", Calculus))}}%
\chapter{\huge When placed inside a chapter command, the CalculusResult \CalculusResult ~ prints well but produces an error message: invalid escape sequence near "\%" }%
\huge No error message if the CalculusResult \CalculusResult ~ is in the text.
\end{document}
答案1
\chapter{abc \eqref{def}}
它与诸如(\eqref
是少数脆弱的命令之一)之类的东西没有太大区别。
该宏\luaexec
很脆弱,因此应该受到保护;将其埋入另一个命令中是不够的,除非另一个命令受到保护。
\documentclass{book}
\usepackage{luacode}
\newcommand\CalculusResult{%
\luaexec{Calculus = 1/3 tex.sprint (string.format("\%0.5f", Calculus))}%
}
\begin{document}
\tableofcontents
\chapter{When placed inside a chapter command, the
CalculusResult \protect\CalculusResult{} prints
well but produces an error message: invalid escape sequence near "\%"}
No error message if the CalculusResult \CalculusResult{} is in the text.
\end{document}
请注意,我用%
在了正确的地方。你用了两个无用的地方,却在重要的地方漏掉了一个。