看來不同的班級使用表格來設定作者佈局。我想渲染這些輸出之一:
相當於\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}{...
我的投影機樣式文件,以便我仍然可以\author{}
在主文件中使用其所有修飾,但由於我不在幻燈片上的其他任何地方使用作者,因此在幻燈片中使用某種框的解決方案主要來源也可以。
答案1
\beamer@author
一個選項是重新定義in 中定義的內部beamerbasetitle.sty
(這樣,定義將與主題無關)以使用tabular
具有所需對齊方式的 a ;您需要使用可選參數為作者書籤提供正確的資訊:
\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}