以下代码示例在使用 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+C和x作为退出编译的输入):
[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}
刚刚测试过pandoc
。beamerthememytheme.sty
\beamer@ignorenonframefalse
\AtEndDocument{\begin{frame}{Last page}Last page\end{frame}}
似乎可以工作并且产生正常帧和结束帧。