我已经离开 Beamer 几年了,现在我回来回顾我以前整理的笔记(代码样本)并制作一些新的演示文稿。
当我编译代码时,我收到以下警告:
hyperref: Token not allowed in a PDF string (PDFDocEncoding): sample.tex
我知道这个警告已经在这里被提出并回答了”Hyperref 警告 - PDF 字符串中不允许使用令牌“还有这里”Hyperref-不允许使用令牌[重复]“。
我针对同一警告提出疑问,因为我找不到如何在函数中包含日期\today
而不产生警告的答案。
在我的代码示例中,如果我包含该函数,\today
则会收到警告,如果我删除该函数并手动添加日期(例如 2018 年 4 月 23 日),则代码可以很好地编译。
样本(更新 2:最小工作示例)
\documentclass[xcolor=pdftex,dvipsnames,table]{beamer}
\usepackage{lmodern}% http://ctan.org/pkg/lm (For special Fonts)
\author[First Last Name]{Date: \today} % (optional, for multiple authors)
\begin{document}
\titlepage
\end{document}
所以我的问题是,有没有办法包含该\today
函数而不收到警告?我不想抑制警告,我知道有原因的警告。我想问是否有人看到我做错了什么,并且知道除了手动更新日期之外的任何解决方法。
答案1
的默认定义\today
是可扩展的,但加载beamer
会改变它:
\documentclass[xcolor=pdftex,dvipsnames,table]{beamer}
\usepackage{lmodern}% http://ctan.org/pkg/lm (For special Fonts)
\show\today
\author[First Last Name]{Date: \today} % (optional, for multiple authors)
\begin{document}
\titlepage
\end{document}
显示 的定义\today
:
> \today=macro:
->\ifcase \month \or \translate {January}\or \translate {February}\or \translat
e {March}\or \translate {April}\or \translate {May}\or \translate {June}\or \tr
anslate {July}\or \translate {August}\or \translate {September}\or \translate {
October}\or \translate {November}\or \translate {December}\fi \space \number \d
ay , \number \year .
l.4 \show\today
该\translate
命令很强大,因此无法扩展,这就是问题所在。一个简单的解决方案是加载datetime2
,然后\today
重新变为可扩展的:
\documentclass[xcolor=pdftex,dvipsnames,table]{beamer}
\usepackage{lmodern}% http://ctan.org/pkg/lm (For special Fonts)
\usepackage[en-US]{datetime2}
\author[First Last Name]{Date: \today} % (optional, for multiple authors)
\begin{document}
\titlepage
\end{document}
此示例还要求datetime2-english
这是单独安装的。