使用pdflatex時expl3擴充錯誤

使用pdflatex時expl3擴充錯誤

尋找答案這個問題我遇到了與withpdflatex擴充相關的錯誤。例如 :\$expl3

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

提高

! 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!

lualatex使用or編譯程式碼不會出現錯誤xelatex,或 if\$被刪除。

為什麼?

答案1

您正在使用預設的 OT1 編碼,該編碼\$在擴展上下文(例如參數)中並不安全,e因為它必須設定新字體以在 OT1 中共享相同位置£之間進行切換。$

要么不使用e參數,要么定義您的參數,\mystring以便\protected它不會在參數中擴展,或者使用在擴展上下文e中安全的編碼。\$

所以這些選擇之一:

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

或者

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

或者

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

相關內容