问题陈述

问题陈述

问题陈述

Beamer 的“文章模式”是一种出色的工具,可以使用 LaTeX 的标准“文章”类从同一来源生成不同的文档 - 例如演示幻灯片和讲义.tex

但是,即使两个文档中可能没有填充所有(子)部分,这两个生成的文档都包含相同的 PDF 书签(即 PDF 阅读器显示的目录)。例如,某些部分可能在幻灯片中没有任何与之关联的框架。

我正在寻找一种方法来自动从文档的 PDF 书签中排除“空”(子)部分的标题。

最小工作示例(MWE)

以下 MWE 应该相当不言自明。

  1. 将下面三个文件(main.texarticle.texbeamer.tex)放入同一目录下。
  2. 将幻灯片编译为pdflatex

    pdflatex beamer
    pdflatex beamer
    
  3. 编译讲义并双击pdflatex

    pdflatex article
    pdflatex article
    
  4. 比较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并重新编译来确认。

相关内容