我正在使用类制作演示幻灯片的乳胶模板beamer
。
我想允许人们在主文件中的 行之前输入他们email address
的。employee_id
tex
\begin{document}
我知道以下代码,但它显示\newcommand
在序言中。我认为这不是一个干净的模板。
\documentclass{beamer}
\title{Latex Template for Presentation Slides}
\date{7 February 2018}
\author{My Name}
\newcommand{\email}{[email protected]}
\newcommand{\employeeid}{ID: 123456}
\begin{document}
\begin{frame}
\insertauthor
\email
\employeeid
\end{frame}
\end{document}
\newcommand{\email}{}
我想要以下方式。并且和的定义\newcommand{\employeeid}
应该添加到beamerinnerthememytheme.sty
文件中,并且用户只应在主.tex
文件中提供他们的信息。
\documentclass{beamer}
\title{Latex Template for Presentation Slides}
\date{7 February 2018}
\author{My Name}
\email{[email protected]}
\employeeid{12345678}
\begin{document}
\begin{frame}
\insertauthor
\email
\employeeid
\end{frame}
\end{document}
我看过帖子投影仪类中的电子邮件字段?,但这不是我想要的。我想要:
- 不仅仅是电子邮件地址(例如员工 ID)
- 电子邮件地址、员工 ID 可以显示在与作者姓名不同的位置/幻灯片中。
你知道如何定义这样的命令\email
和\employeeid
吗?
谢谢!
答案1
定义一些包装宏,将电子邮件和员工 ID 存储到某个位置。如果是内部的,请@
在宏名称中使用一些宏,并将其放置\makeatletter...\makeatother
在文件中.sty
。
\newcommand{\email}[1]{\gdef\email@internal{#1}}
定义\email@internal
为内容——这是使用LaTeX 核心的#1
方法。\@title
\@author
我建议使用\insertemail
和\insertemployeeid
作为类似于的名称\insertauthor
。
\documentclass{beamer}
\title{Latex Template for Presentation Slides}
\date{7 February 2018}
\author{My Name}
\makeatletter
%First empty definitions
\def\email@internal{}
\def\employeeid@internal{}
\newcommand{\email}[1]{\gdef\email@internal{#1}}
\newcommand{\employeeid}[1]{\gdef\employeeid@internal{#1}}
\newcommand{\insertemail}{\email@internal}
\newcommand{\insertemployeeid}{\employeeid@internal}
\makeatother
\email{gandalf@mordor}
\employeeid{ID: 123456}
\begin{document}
\begin{frame}
\insertauthor
\insertemail
\insertemployeeid
\end{frame}
\end{document}
答案2
标准大概是这样的:
\makeatletter
\newcommand{\email}[1]{\gdef\@email{#1}}
\makeatother
然后宏\@email
保留给予的值\email