鉴于以下 MWE:
\documentclass{article}
\usepackage[italian]{babel}
\usepackage{alltt}
\begin{document}
\begin{alltt}
\(\sb{1,1}\)
\end{alltt}
\end{document}
我收到错误:
TeX capacity exceeded, sorry [main memory size=5000000].
,->\leavevmode \kern \z@
\char `\,
l.9 \(\sb{1,1
}\)
更改\usepackage[italian]{babel}
为\usepackage[english]{babel}
可解决问题(但这不是我需要的)。
我怀疑这可能是由于 babel 的简写造成的,但我不知道该italian
选项定义了哪些简写,也不知道哪一个可能导致了问题。
答案1
这显然是 中的一个错误babel-italian
。我对添加“智能逗号”功能并不满意。添加\NoIntelligentComma
并不能解决问题,因为它将逗号保留为数学活动字符,而这正是 中的问题所在alltt
。
如果你不需要“智能逗号”,你可以简单地添加
\AtBeginDocument{\mathcode`,=\virgola}
到你的序言(加载后babel
)。
如果您只想解决中的问题alltt
,那么您可以将设置添加到alltt
:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[italian]{babel}
\usepackage{alltt}
% fix alltt for the comma in math mode
\usepackage{etoolbox}
\AtBeginEnvironment{alltt}{\mathcode`,=\virgola}
\begin{document}
\begin{alltt}
\(\sb{1,1}\)
\end{alltt}
\end{document}