\small{\date{}} 的奇怪行为

\small{\date{}} 的奇怪行为

我想让 beamer 以较小的字体显示日期,但错误地\date{December 15, 2017}用标签包裹了字段\small。令人惊讶的是,pdflatex 并没有发出错误或更改字体大小,而是产生了“December11,2017”。这种行为有什么解释吗?

更新型多巴胺:有人指出,这\small是一个开关,不接受参数。然而,{\small \date{December 15, 2017}}产生了十二月12,2017年。

答案1

\small与问题无关。

事实\date不是打印日期,而是将内部变量设置为作为参数给出的日期。工作原理基本上是

\newcommand{\date}[1]{\renewcommand{\internaldate}{#1}}

(不同的名称和更复杂的动作,但这就是想法)并且的代码\maketitle将使用\internaldate

当你这样做

\small{\date{July 38, 1973}}

或者

{\small\date{July 38, 1973}}

\date指令是按组执行的,因此\internaldate一旦组结束,重新定义就会被遗忘,最终您会得到今天的日期,默认情况下会使用该日期。这解释了为什么您得到11当你提出这个问题时12当你修改它时。在第一种情况下,该组是因为\small不接受任何参数。

答案2

不要输入\small\date{...}这将产生无法预料的副作用。最好使用 更改日期的打印方式\setbeamerfont

\documentclass{beamer}
\setbeamerfont{date}{size=\small}
\begin{document}

\begin{frame}
  \maketitle
\end{frame}

\end{document}

相关内容