改进自定义变量

改进自定义变量

我正在使用以下代码来定义新的自定义变量以及现有的变量,并在文档的后面使用它们的值。

\newcommand\subtitle[1]{\newcommand\zzsubtitle{#1}}
\newcommand\institute[1]{\newcommand\zzinstitute{#1}}
\newcommand\fullmarks[1]{\newcommand\zzfullmarks{#1}}
%
\title{CC3 -- Mathematics}
\author{Subhajit Paul}
\institute{Salesian College, Siliguri Campus}
\date{BSc Honours 2\textsuperscript{nd} Semester Examination, 2023}
\subtitle{Real Analysis}
\fullmarks{60}
%
\makeatletter
\let\titlevalue\@title
\let\authorvalue\@author
\let\datevalue\@date
\makeatother

我现在想要的是为变量提供一个可选值。例如,我想写

\title[MATHCC3]{CC3 -- Mathematics}

并且该值MATHCC3将存储在另一个变量中,例如\shorttitle。但是,如果我写

\title{CC3 -- Mathematics}

那么\shorttitle变量将具有与 相同的值。对于自定义变量(如和 )\titlevalue,也应实现相同的功能。我该如何实现这一点?\subtitle\institute

答案1

像这样?

\documentclass{article}
\makeatletter
\renewcommand{\title}[2][\empty]{% #1 = short title (optional), #2 = title
  \ifx\empty#1\relax
    \def\zzshorttitle{#2}%
  \else
    \def\zzshorttitle{#1}%
  \fi
  \def\@title{#2}}
\makeatother

\title[Real Analysis]{CC3 -- Mathematics}
\author{Subhajit Paul}
%\institute{Salesian College, Siliguri Campus}
\date{BSc Honours 2\textsuperscript{nd} Semester Examination, 2023}

\begin{document}
\maketitle

\zzshorttitle
\end{document}

相关内容