![pdflatex 使用時の expl3 展開エラー](https://rvso.com/image/475727/pdflatex%20%E4%BD%BF%E7%94%A8%E6%99%82%E3%81%AE%20expl3%20%E5%B1%95%E9%96%8B%E3%82%A8%E3%83%A9%E3%83%BC.png)
答えを探しているこの質問のpdflatex
展開に関連するエラーが発生しました。例:\$
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
またはxelatex
、または が削除された場合、コードはエラーなしでコンパイルされます\$
。
なぜ?
答え1
デフォルトの OT1 エンコーディングを使用していますが、これは、切り替える新しいフォントを設定する必要があり、OT1 で同じ位置を共有するため、引数\$
などの拡張コンテキストでは安全ではありません。e
£
$
引数を使用しないか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}