![ошибка расширения expl3 при использовании pdflatex](https://rvso.com/image/475727/%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0%20%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D1%8F%20expl3%20%D0%BF%D1%80%D0%B8%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20pdflatex.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 по умолчанию, которая \$
небезопасна в контексте расширения, например, 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}