我有一门课,其中的一个选项是陈述一个代码,而由此产生的学习计划会在整个文档的各个点上显示出来。该选项还会更改与每个计划相关的许多其他文本块。例如:
\DeclareOption{AK3696}{\def\degreetitle{Bachelor of Arts (Honours)}}
但是,有 156 个代码,虽然声明了 156 个选项,但这确实很烦人。我更希望将所有代码和程序名称放在一个可以轻松更新的单独文件中(这些代码和程序名称每年可能会更改两次,删除旧的并添加新的)。
有没有办法,使用\DeclareOption
,在结构化对象数组中定义程序代码和程序名称,并使用程序代码作为指针?
该数组不应包含类代码,例如以下形式:
“AK3696”,“文学学士(荣誉)”
“AK3656”,“应用科学学士(荣誉)”
“AK3670”,“艺术与设计学士(荣誉)”
“AK3712”,“荣誉商学士”
“AK3687”,“计算机与信息科学学士(荣誉)”
答案1
这个问题有点太笼统了。我会利用这个\DeclareOption*
功能:
\DeclareOption*{\edef\alanclass@givencode{\CurrentOption}}
你可以\ProcessOptions
输入你的代码文件格式
%% file alanclasscodes.def
\alanclass@code{AK3696}{%
\def\degreetitle{Bachelor of Arts (Honours)}%
}
%%% and so on for the other codes
通过做
\def\alanclass@code#1#2{%
\def\next{#1}%
\ifx\alanclass@givencode\next
#2%
\fi
}
\input{alanclasscodes.def}
因此,与所选选项相关的 TeX 代码将被执行,而其他代码将被丢弃。