\maketitle 重新定义中的自定义命令

\maketitle 重新定义中的自定义命令

我想重新定义\maketitle它包含我的自定义命令的方式。我有一个家庭作业,我想放置\@variant命令或其他东西,以便能够稍后像使用和一样进行\@author设置\@title

这是我的重新定义

\makeatletter
\renewcommand{\maketitle}{
    \begin{center}
        \vspace{2ex}
        \textbf{\huge \textsc{\@title}}
        \vspace{3ex}\\
        \Large \@author\\
        \hrulefill\\
        \vspace{1ex}
    \end{center}
}
\makeatother

然后在序言中我有这样的命令:

\title{My beautiful title}
\author{My Name}

我想写\varian{number}下来\author并把它放在我的名字下。

这是的定义\variant

\newcommand{\variant}[1]{Variant №\:#1}

它应该是这样的:

\makeatletter
\renewcommand{\maketitle}{
    \begin{center}
        \vspace{2ex}
        \textbf{\huge \textsc{\@title}}
        \vspace{3ex}\\
        \Large \@author\\
        \small \@variant\\
        \hrulefill\\
        \vspace{1ex}
    \end{center}
}
\makeatother

\title{My beautiful title}
\author{My Name}
\variant{number}

重要的:我不想在重新定义时直接对其进行硬编码,我想让一切都变得花哨。而且我不想使用任何额外的包。

答案1

\variant命令可以定义为:

\newcommand\variant[1]{\renewcommand\@variant{Variant \textnumero\,#1}}
\newcommand\@variant{}

我添加了textcomp包来排版 象征否则无法识别此字符。如果您不想添加此包,也许可以更改号码标识。

\documentclass[]{article}

\usepackage{textcomp}

\makeatletter
\newcommand\variant[1]{\renewcommand\@variant{Variant \textnumero\,#1}}
\newcommand\@variant{}
\renewcommand{\maketitle}{
    \begin{center}
        \vspace{2ex}
        \textbf{\huge \textsc{\@title}}
        \vspace{3ex}\\
        \Large \@author\\
        \small \@variant\\
        \hrulefill\\
        \vspace{1ex}
    \end{center}
}
\makeatother

\begin{document}
\title{My beautiful title}
\author{My Name}
\variant{number}
\maketitle
\end{document}

在此处输入图片描述

答案2

titling包提供了一个很好的修改标题的界面。它提供了在每个必需元素后插入材料的命令。

\variant以下是将您的内容添加到标题的简单方法:

\documentclass{article}
\usepackage{titling}
\newcommand{\variant}[1]{\def\myvariant{#1}}
\renewcommand{\maketitlehookc}{\large\centering\par  Variant No: \myvariant}
\title{A title}
\variant{A variant number}
\author{An author}
\date{\today}
\begin{document}
\maketitle
\end{document}

代码输出

相关内容