![erro de expansão expl3 ao usar pdflatex](https://rvso.com/image/475727/erro%20de%20expans%C3%A3o%20expl3%20ao%20usar%20pdflatex.png)
Procurando uma resposta paraessa questãoRecebi pdflatex
um erro relacionado à expansão do \$
with expl3
. Por exemplo :
\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand{\test}{ m }
{
\tl_set:Ne \l_tmpa_tl { #1 }
\tl_use:N \l_tmpa_tl
}
\ExplSyntaxOff
\begin{document}
\newcommand*{\mystring}{Special: Five (5) bananas for \$1.50.}
\test{\mystring}
\end{document}
levanta
! TeX capacity exceeded, sorry [input stack size=10000].
\font@name ->
\OT1/cmr/m/n/10
l.15 \test{\mystring}
! ==> Fatal error occurred, no output PDF file produced!
O código é compilado sem erros com lualatex
ou xelatex
, ou se \$
for removido.
Por que?
Responder1
Você está usando a codificação OT1 padrão, que \$
não é segura em um contexto de expansão, como um e
argumento, pois é necessário configurar novas fontes para alternar £
e $
que compartilham a mesma posição em OT1.
Não use o e
argumento ou defina seu \mystring
to be \protected
para que não se expanda nos e
argumentos, ou use uma codificação que \$
seja segura em um contexto de expansão.
Então, uma destas opções:
\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand{\test}{ m }
{
\tl_set:Nn \l_tmpa_tl { #1 }
\tl_use:N \l_tmpa_tl
}
\ExplSyntaxOff
\begin{document}
\newcommand{\mystring}{Special: Five (5) bananas for \$1.50.}
\test{\mystring}
\end{document}
ou
\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand{\test}{ m }
{
\tl_set:Ne \l_tmpa_tl { #1 }
\tl_use:N \l_tmpa_tl
}
\ExplSyntaxOff
\begin{document}
\NewDocumentCommand\mystring {} {Special: Five (5) bananas for \$1.50.}
\test{\mystring}
\end{document}
ou
\documentclass{article}
\usepackage[T1]{fontenc}
\ExplSyntaxOn
\NewDocumentCommand{\test}{ m }
{
\tl_set:Ne \l_tmpa_tl { #1 }
\tl_use:N \l_tmpa_tl
}
\ExplSyntaxOff
\begin{document}
\newcommand{\mystring}{Special: Five (5) bananas for \$1.50.}
\test{\mystring}
\end{document}