问题陈述
Beamer 的“文章模式”是一种出色的工具,可以使用 LaTeX 的标准“文章”类从同一来源生成不同的文档 - 例如演示幻灯片和讲义.tex
。
但是,即使两个文档中可能没有填充所有(子)部分,这两个生成的文档都包含相同的 PDF 书签(即 PDF 阅读器显示的目录)。例如,某些部分可能在幻灯片中没有任何与之关联的框架。
我正在寻找一种方法来自动从文档的 PDF 书签中排除“空”(子)部分的标题。
最小工作示例(MWE)
以下 MWE 应该相当不言自明。
- 将下面三个文件(
main.tex
、article.tex
、beamer.tex
)放入同一目录下。 将幻灯片编译为
pdflatex
:pdflatex beamer pdflatex beamer
编译讲义并双击
pdflatex
:pdflatex article pdflatex article
比较PDF 阅读器中
article.pdf
的内容和 PDF 书签。beamer.pdf
main.tex
\mode*
\section{This heading appears in the PDF bookmarks of article.pdf and beamer.pdf,%
even though the section is empty in beamer.pdf}
This sentence goes into article, but not presentation mode.
\section{This heading appears in the PDF bookmarks of article.pdf and beamer.pdf,%
as it should}
\begin{frame}{Foo}{}
This sentence goes into both, article and presentation mode.
\end{frame}
\mode<all>
article.tex
\documentclass{article}
\usepackage{beamerarticle}
\usepackage{hyperref}% Required for PDF bookmarks
\begin{document}
\input{main.tex}
\end{document}
beamer.tex
\documentclass[ignorenonframetext]{beamer}
%\usepackage{bookmark}
% NOTE: Using this package instead of the internal PDF bookmark
% algorithm of the 'hyperref' package (which beamer uses automatically)
% does /not/ solve the problem.
\begin{document}
\mode<all>
\input{main.tex}
\mode*
\end{document}
我考虑过但对我不起作用的解决方法
手动指定章节标题的模式
我相信在 Beamer 的文章模式中,可以指定章节标题适用于哪种模式,例如通过
\section<presentation>{My heading}
但是,由于项目规模较大,因此对于我的情况来说,这不是一个可接受的解决方案。我正在寻找自动化从 PDF 书签中排除空白部分标题的方法。
“书签”包不能解决问题
Beamer 文档建议\usepackage{bookmark}
使用 hyperref 的内部 PDF 书签算法。我试过这个,但它不能解决问题,可以通过取消注释上面的相应行beamer.tex
并重新编译来确认。