beamer 的 ignorenonframetext 选项和 \AtEndDocument

beamer 的 ignorenonframetext 选项和 \AtEndDocument

以下代码示例在使用 pdflatex 编译时会产生错误:

\documentclass[ignorenonframetext]{beamer}
\AtEndDocument{\begin{frame}{Last page}Last page\end{frame}}
\begin{document}
\begin{frame}{Test document}Test\end{frame}
\end{document}

输出pdflatex beamer_test.tex(使用Ctrl+Cx作为退出编译的输入):

[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2])
*^C! Interruption.
<*> 

? x

另一方面,如果我删除该ignorenonframetext选项,一切都会正常工作。

现在的问题是,在我的实际设置中,选项是通过pandoc(使用pandoc -s -t beamer -o beamer_test.pdf -V theme:mytheme beamer_test.md)生成的,并且\AtEndDocument命令位于my_theme(模仿基于 powerpoint 的主题,最后一页是固定的)。我还没有找到pandoc可以摆脱该选项的选项。

更糟糕的是,这里有一个最小的 markdown 文档和 beamer 主题,它们会触发上面的命令行问题:

beamerthememytheme.sty

\AtEndDocument{\begin{frame}{Last page}Last page\end{frame}}

beamer_test.md

# Test document

test

有没有办法可以让它mytheme工作pandoc,而无需删除-s并提供我自己的序言(否则,我也只能一直坚持使用 LaTeX)?

答案1

要忽略忽略选项,您可以尝试\beamer@ignorenonframefalse添加beamerthememytheme.sty

\makeatletter
\beamer@ignorenonframefalse
\makeatother

在您的文档的序言中。

\documentclass[ignorenonframetext]{beamer}

\makeatletter
\beamer@ignorenonframefalse
\makeatother

\AtEndDocument{\begin{frame}{Last page}Last page\end{frame}}
\begin{document}
\begin{frame}{Test document}Test\end{frame}
\end{document}

刚刚测试过pandocbeamerthememytheme.sty

\beamer@ignorenonframefalse
\AtEndDocument{\begin{frame}{Last page}Last page\end{frame}}

似乎可以工作并且产生正常帧和结束帧。

相关内容