3

The error message "invalid escape sequence near "\%"" occurs only when a \luaexec tex.sprint is placed inside a \chapter command: why ?

\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}

enter image description here

1
  • 1
    The command is not robust, use \protect\CalculusResult, or define it with \DeclareRobustCommand or \NewDocumentCommand (from xparse package). Jun 22, 2016 at 15:34

1 Answer 1

6

It's not much different from things like \chapter{abc \eqref{def}} (\eqref is one of the few fragile commands).

The macro \luaexec is fragile, so it should be protected; burying it into another command is not sufficient, unless the other command is protected.

\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}

Note that I have used % in the correct places. You had two in useless ones and missed one in an important place.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .