看起来不同的类使用表格设置了作者布局。我想呈现以下输出之一:
相当于\begin{tabular}{rl}
:
Joe Schmoe My Boss
Jane Doe His Boss
或者,相当于\raggedleft
:
Joe Schmoe My Boss
Jane Doe His Boss
来自类似于这个 M(N)WE 的东西:
\documentclass{beamer}
\author{%
Joe Schmoe, My Boss%
\and
Jane Doe, His Boss%
}
\begin{document}
\maketitle
\end{document}
我不介意使用\institute
或类似名称来表示职位名称,我甚至可以删除职位名称来寻找简单的解决方案。
在其他一些文档类别中有一个很好的解决方案\preauthor
,我可以在我的样式文件中对其进行修改。不幸的是,我在 Beamer 3 中使用该代码时出现未知命令错误\preauthor
。Beamer 中是否有等效构造?
还有另一种方法使用表格环境 但 Beamer 也失败了。
理想情况下,我想更改\defbeamertemplate*{title page}{default theme}{...
我的 beamer 样式文件,以便我仍然可以\author{}
在主文件中使用其所有装饰,但由于我在幻灯片上的任何其他地方都没有使用作者,因此使用主源中的某种框的解决方案也会起作用。
答案1
\beamer@author
一个选项重新定义在beamerbasetitle.sty
(这样,定义将与主题无关)中的内部定义,以使用tabular
具有所需对齐方式;您需要使用可选参数为作者书签提供适当的信息:
\documentclass{beamer}
\usetheme{Madrid}
\makeatletter
\long\def\beamer@author[#1]#2{%
\def\insertauthor{\def\inst{\beamer@insttitle}\def\and{\beamer@andtitle}%
\begin{tabular}{rl}#2\end{tabular}}%
\def\beamer@shortauthor{#1}%
\ifbeamer@autopdfinfo%
\def\beamer@andstripped{}%
\beamer@stripands#1 \and\relax
{\let\inst=\@gobble\let\thanks=\@gobble\def\and{, }\hypersetup{pdfauthor={\beamer@andstripped}}}
\fi%
}
\makeatother
\title{The title}
\author[Joe and Jane]{%
Joe Schmoe, & My Boss \\
Jane Doe, & His Boss
}
\begin{document}
\begin{frame}
\maketitle
\end{frame}
\end{document}
更改\begin{tabular}{rl}
为\begin{tabular}{r}
上述内容以满足其他对齐要求。
在评论中,已要求重新定义,\and
以便它充当\tabularnewline
强制参数中的单独作者行\author
;这是所需的修改:
\documentclass{beamer}
\usetheme{Madrid}
\makeatletter
\long\def\beamer@author[#1]#2{%
\def\and{\tabularnewline}
\def\insertauthor{\def\inst{\beamer@insttitle}\def\and{\tabularnewline}%
\begin{tabular}{rl}#2\end{tabular}}%
\def\beamer@shortauthor{#1}%
\ifbeamer@autopdfinfo%
\def\beamer@andstripped{}%
\beamer@stripands#1 \and\relax
{\let\inst=\@gobble\let\thanks=\@gobble\def\and{, }\hypersetup{pdfauthor={\beamer@andstripped}}}
\fi%
}
\makeatother
\title{The title}
\author[Joe \and Jane]{%
Joe Schmoe, & My Boss \and
Jane Doe, & His Boss
}
\begin{document}
\begin{frame}
\maketitle
\end{frame}
\end{document}