ucthesis + polyglossia hebrew + hyperref = TeX 容量超出

ucthesis + polyglossia hebrew + hyperref = TeX 容量超出

我在 ucthesis 类中遇到了一个问题,在多语环境中使用希伯来语并使用 hyperref 会导致在使用 \maketitle 时出现“TeX 容量超出”错误(只有这样!)我花了一些精力来寻找似乎是仍然会产生错误的最小代码:

\documentclass{ucthesis}
\usepackage{polyglossia}
\usepackage{hyperref}
\setotherlanguage{hebrew}
\begin{document}
\maketitle
\end{document}

请注意,此代码已被精简,因此实际上应该会抛出不同的错误,因为我尚未定义 ucthesis 所需的 \maketitle 的所有内容,但我想创建最小示例。绝对需要包含 \maketitle 行才能产生错误;其他任何操作都不会产生错误。

更令人困惑的是,如果我创建自定义的本地 ucthesis.cls 并将 \maketitle 定义替换为:

\def\maketitle{a}

我仍然可以产生错误。

我在 Windows XP 上的 MiKTeX 2.9 和 Mac OS 10.7 上的 MacTeX-2012 上都出现了这个错误(我很快会尝试一下 MacTeX-2013)。

帮助?

答案1

由于某些原因,\maketitle被重新定义两次,第二次\HyOrg@maketitlehyperref用于存储旧含义的\maketitle)指向自身,从而形成了循环。

这似乎是在加载希伯来语时发生的。以下技巧应该会有所帮助。但是,这似乎是 的问题ucthesis,因为标准类中没有出现此问题。

\documentclass{ucthesis}
\usepackage{polyglossia}
\setmainlanguage{english}

\let\keptmaketitle\maketitle

\usepackage{hyperref}
\setotherlanguage{hebrew}

\let\maketitle\keptmaketitle

\begin{document}
\maketitle

\end{document}

相关内容