expl3-Erweiterungsfehler bei Verwendung von pdflatex

expl3-Erweiterungsfehler bei Verwendung von pdflatex

Auf der Suche nach einer Antwort aufdiese FrageIch habe pdflatexeinen 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 lualatexoder kompiliert xelatex, oder wenn \$entfernt wird.

Warum?

Antwort1

Sie verwenden die standardmäßige OT1-Kodierung, die \$in einem Erweiterungskontext wie einem eArgument nicht sicher ist, da neue Schriftarten zum Umschalten eingerichtet werden müssen £und $diese in OT1 dieselbe Position haben.

eVerwenden Sie das Argument entweder nicht oder definieren Sie Ihr \mystring„be“ \protected, sodass es in eArgumenten 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}

verwandte Informationen