![Error de expansión expl3 al usar pdflatex](https://rvso.com/image/475727/Error%20de%20expansi%C3%B3n%20expl3%20al%20usar%20pdflatex.png)
Buscando una respuesta aesta preguntaRecibí pdflatex
un error relacionado con la expansión de \$
with expl3
. Por ejemplo :
\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}
eleva
! 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!
El código se compila sin errores con lualatex
o xelatex
, o si \$
se elimina.
¿Por qué?
Respuesta1
Está utilizando la codificación OT1 predeterminada, que \$
no es segura en un contexto de expansión, como un e
argumento, ya que tiene que configurar nuevas fuentes para cambiar £
y $
que comparten la misma posición en OT1.
No use el e
argumento o defina su \mystring
para \protected
que no se expanda en e
los argumentos, o use una codificación que \$
sea segura en un contexto de expansión.
Entonces una de estas opciones:
\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}
o
\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}
o
\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}