在 Beamer 文档的标题页中包含图片的一种方便方法是在标题环境中使用\includegraphics
。缺点是,某些 pdf 阅读器的标题栏中显示的文档文件名也包括图片的文件名和一些定位命令。
例如,对于最小工作示例
\documentclass{beamer}
\title{\hspace{-0.5cm} \includegraphics[width=0.1\textwidth]{pdflogo.pdf}\\ \hspace{0.5cm}\\ \large My Custom Title}
\author{Me}
\date
\begin{document}
\frame{\titlepage}
\end{document}
结果是(在 Debian Linux 下的 Okular 中)
作为Okular 手册写道(第 30 页)“如果可用,则在标题栏中显示文档标题。是否在 Okular 窗口的标题栏中显示当前文档标题。如果在文档中未找到标题的元数据或未选中此项,则 Okular 将显示文档的文件名。”我认为这是元数据的问题。
但是,通过 hyperref 更改元数据
\usepackage{hyperref}
\hypersetup{
pdftitle={My Custom Title}
}
或 pdfinfo 与
\pdfinfo{/Title (My Custom Title)}
或添加简短标题
\title[My Custom Title]{\hspace{-0.5cm} \includegraphics[width=0.1\textwidth]{pdflogo.pdf}\\ \hspace{0.5cm}\\ \large My Custom Title}
并不能解决问题。
问题:有没有办法通过改变元数据来定制 pdf 查看器的标题栏条目(如果从元数据中获取)?
请注意,大多数 pdf 查看器不会出现此问题,因为它们只使用标题页中的文件名(例如,Windows 或 Mac 下的 Acrobat reader,Windows 下的 Sumatra)。但是,这似乎不是 Okular 独有的,因为我可以使用其他查看器/程序重现此问题(例如,Debian Linux 上的 Evince 和 Gimp)。
答案1
您不应该花时间解决因滥用命令而产生的副作用,\title
而应该定义自己的title page
模板:
\documentclass{beamer}
\title{My Custom Title}
\titlegraphic{\includegraphics[height=1cm]{example-image-A}}
\author{Me}
\date{\today}
\defbeamertemplate{title page}{mystyle}[1][]
{
\vbox{}
\vfill
\begingroup
\centering
{\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par}
\vskip1em
\begin{beamercolorbox}[sep=8pt,center,#1]{title}
\usebeamerfont{title}\inserttitle\par%
\ifx\insertsubtitle\@empty%
\else%
\vskip0.25em%
{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}%
\fi%
\end{beamercolorbox}%
\vskip1em\par
\begin{beamercolorbox}[sep=8pt,center,#1]{author}
\usebeamerfont{author}\insertauthor
\end{beamercolorbox}
\begin{beamercolorbox}[sep=8pt,center,#1]{institute}
\usebeamerfont{institute}\insertinstitute
\end{beamercolorbox}
\begin{beamercolorbox}[sep=8pt,center,#1]{date}
\usebeamerfont{date}\insertdate
\end{beamercolorbox}%
\endgroup
\vfill
}
\setbeamertemplate{title page}[mystyle]
\begin{document}
\frame{\titlepage}
\end{document}
您可以使用组合键\defbeamertemplate
+来直接激活新模板。\setbeamertemplate
\defbeamertemplate*
答案2
正如所提到的这个答案,您可以将选项传递usepdftitle=false
给 beamer(\documentclass[usepdftitle=false,...]{beamer}
)。此后,\hypersetup{pdftitle=foo}
应该可以按预期工作。