![expl3-Erweiterungsfehler bei Verwendung von pdflatex](https://rvso.com/image/475727/expl3-Erweiterungsfehler%20bei%20Verwendung%20von%20pdflatex.png)
Auf der Suche nach einer Antwort aufdiese FrageIch habe pdflatex
einen Fehler im Zusammenhang mit der Erweiterung von \$
mit erhalten expl3
. Beispiel:
\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}
erhöht
! 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!
Der Code wird ohne Fehler mit lualatex
oder kompiliert xelatex
, oder wenn \$
entfernt wird.
Warum?
Antwort1
Sie verwenden die standardmäßige OT1-Kodierung, die \$
in einem Erweiterungskontext wie einem e
Argument nicht sicher ist, da neue Schriftarten zum Umschalten eingerichtet werden müssen £
und $
diese in OT1 dieselbe Position haben.
e
Verwenden Sie das Argument entweder nicht oder definieren Sie Ihr \mystring
„be“ \protected
, sodass es in e
Argumenten nicht erweitert wird, oder verwenden Sie eine Kodierung, die \$
in einem Erweiterungskontext sicher ist.
Also eine dieser Möglichkeiten:
\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}
oder
\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}
oder
\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}