\newline 导致 TeX 容量超出错误

\newline 导致 TeX 容量超出错误

我正在编写一些代码,以便将幻灯片中引用的参考文献直接显示在footlineBeamer 演示文稿中,但我遇到了一个令我困惑的错误。我拥有的代码(有效)如下:

\def\framerefs{}
\def\interframerefs{}
\def\clearframerefs{\gdef\framerefs{}\gdef\interframerefs{}}

\def\cite#1{\xdef\framerefs{\framerefs\interframerefs#1}\gdef\interframerefs{~}}
\defbeamertemplate{footline}{footline refs}{
    \hbox{\begin{beamercolorbox}[wd=\paperwidth,dp=1ex]{refs in foot}%
        \framerefs
    \end{beamercolorbox}}%
    \clearframerefs
}
\setbeamerfont{footline}{size=\normalsize}
\setbeamertemplate{footline}[footline refs]

但如果我希望每个引用都放在单独的行上,则更改为\cite

\def\cite#1{\xdef\framerefs{\framerefs\interframerefs#1}\gdef\interframerefs{\\}}

编译失败,出现容量超出错误:

! TeX capacity exceeded, sorry [main memory size=3000000].
<argument> ...le }\framesubtitle }\framesubtitle }
                                                  \framesubtitle }\framesubt...

我觉得有点奇怪,用空格作为分隔符可以正常工作,但换行符会爆炸(同样的事情也发生在 上\newline)。有人知道哪里出了问题吗(或者有更好的方法来做我想做的换行符分隔列表的事情?

答案1

\xdef\framerefs{\framerefs\interframerefs#1}

一场即将发生的事故。

尝试

 \protected@xdef\framerefs{\framerefs\interframerefs#1}

或更安全

 \g@addto@macro\framerefs{\interframerefs#1}

(由于没有提供可运行的示例,因此未经测试)

相关内容