![如何在投影機主文件中定義用於主題中使用的附加資訊的命令?](https://rvso.com/image/309859/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%8A%95%E5%BD%B1%E6%A9%9F%E4%B8%BB%E6%96%87%E4%BB%B6%E4%B8%AD%E5%AE%9A%E7%BE%A9%E7%94%A8%E6%96%BC%E4%B8%BB%E9%A1%8C%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9A%84%E9%99%84%E5%8A%A0%E8%B3%87%E8%A8%8A%E7%9A%84%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
在典型的投影機文件中,我可以設定各種選項,例如\author
或\title
:
主文件
\documentclass{beamer}
\author{George Orwell}
\title{Animal Farm}
\date{\today}
\institute[TUD]
%\def\talklocation{Berlin}
\usetheme{tudrobert}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\end{document}
然後可以在模板定義中使用:
Beamerthemetudrobert.tex
\mode<presentation>
\usepackage{graphicx}
\usepackage[absolute,overlay]{textpos}
\usepackage{calc}
\usepackage{fontspec}
\useinnertheme{tudrobert}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{blocks}[rounded][shadow=true]
\mode<all>
最後是我想使用指令的主題:
Beamerinnerthemetudrobert.tex
\mode<presentation>
\defbeamertemplate*{title page}{tudrobert}{%
\usebeamerfont*{title}
\MakeUppercase{\inserttitle}\par
\vfill
{\scriptsize\insertauthor}
\vfill
\vfill
%\talklocation, \insertdate
}
\mode<all>
建議使用
\def\talklocation{Berlin}
和
\talklocation
拋出錯誤
這同樣適用於
\newcommand{\talklocation}{Berlin}
添加附加屬性/字串以傳遞給主題的適當方法是什麼?
答案1
正如 Jojo Boulix 在評論中所建議的投影機選項是要走的路。
這三個文件可能如下所示:
主文件
\documentclass{beamer}
\author{George Orwell}
\title{Animal Farm}
\date{\today}
\institute[TUD]
\usetheme[location=Berlin]{tudrobert}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\end{document}
Beamerthemetudrobert.tex
\mode<presentation>
\DeclareOptionBeamer{location}{\PassOptionsToPackage{location=#1}{beamerinnerthemetudrobert}}
\DeclareOptionBeamer{conference}{\PassOptionsToPackage{conference=#1}{beamerinnerthemetudrobert}}
\ProcessOptionsBeamer
\usepackage{graphicx}
\usepackage[absolute,overlay]{textpos}
\usepackage{calc}
\usepackage{fontspec}
\useinnertheme{tudrobert}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{blocks}[rounded][shadow=true]
\mode<all>
Beamerinnerthemetudrobert.tex
\mode<presentation>
\DeclareOptionBeamer{location}{\def\beamer@tudrobert@location{#1}}
\DeclareOptionBeamer{conference}{\def\beamer@tudrobert@conference{#1}}
\ProcessOptionsBeamer
\defbeamertemplate*{title page}{tudrobert}{%
\usebeamerfont*{title}
\MakeUppercase{\inserttitle}\par
\vfill
{\scriptsize\insertauthor}
\vfill
\vfill
\beamer@tudrobert@location, \insertdate
\beamer@tudrobert@conference
}
\mode<all>