我正在使用MIT 论文模板撰写我的论文。我根据版本创建了自己的文档类(反映了我所就读大学的需求)mitthesis.cls
。由于可以有多个主管,MIT 类实现了一个vbox
用于存储主管列表和一个添加他们的命令。我遇到的主要问题是,我不知道如何水平居中vbox
包含主管列表的文档。它始终与左边距对齐显示。下面的代码是我正在使用的代码。
\supervisor{First Supervisor} <= add 1st supervisor
\supervisor{Second Supervisor} <= add 2nd supervisor
[...]
% store the supervisor list in a box
\newbox\@titlesupervisor
% since there can be more than one supervisor,
% we build the box for the titlepage
% as the user makes multiple calls
% to \supervisor
\def\supervisor#1{\setbox\@titlesupervisor\vbox
{\unvbox\@titlesupervisor \vskip 10pt
\def\baselinestretch{1}\large
{#1}
}
}
[...]
% Print the supervisor list after the heading, author, etc.
\textbf{Supervisor(s)}\par
\unvbox\@titlesupervisor
\vfill
我不完全明白这\unvbox
是怎么回事,但我认为这与垂直边距扩展以适合文本有关,因为如果我删除最后一个\unvbox
,第一个主管就会消失在 pdf 中。
我遇到的另一个问题是,我不知道如何确定主管列表中的条目数,以便我可以决定是打印单个还是多个“主管”? 我是否需要在添加命令中实现计数器,或者我可以从主管#1或titlesupervisor变量中以某种方式获取数字?
答案1
我会采取不同的策略:
\let\@titlesupervisor\@empty % initialize
\newif\if@supervisors
\def\supervisor#1{%
\ifx\@titlesupervisor\@empty
% do nothing, it's the first
\else
\@supervisorstrue % more than one supervisor
\fi
\g@addto@macro\@titlesupervisor{#1\\}%
}
[...]
% Print the supervisor list after the heading, author, etc.
\begin{center}
\if@supervisors
\textbf{Supervisors}
\else
\textbf{Supervisor}
\fi
\begin{tabular}{@{}l@{}}
\@titlesupervisor
\end{tabular}
\end{center}