图书类别中的副标题

图书类别中的副标题

我正在使用特定的书籍模板(和 .cls 文件)。我想添加副标题。当我尝试这样做时,\maketitle 处显示错误,提示“\@icentercr 的使用与其定义不匹配。\def”我该如何修复此问题?我必须转到 .cls 文件并在那里修复它吗?

\begin{document}
\title{
 Main Title \\ 
      Subtitle
 }

抱歉,没有包括 mwe,我正在使用的模板,我无法做到这一点。

答案1

如果你必须使用book不能使用titling,然后您可以重新定义\maketitle

我从中复制了定义book.cls并添加了两行:

    \vskip 1.5em% Added this
    {\Large \@subtitle \par}% and this

就在标题下方。我还添加了一个包装命令来添加副标题:

\def\subtitle#1{\gdef\@subtitle{#1}}

如果没有 MWE,那么最好的办法就是:

在此处输入图片描述

\documentclass{book}

\makeatletter
\def\subtitle#1{\gdef\@subtitle{#1}}
\def\maketitle{\begin{titlepage}%
  \let\footnotesize\small
  \let\footnoterule\relax
  \let \footnote \thanks
  \null\vfil
  \vskip 60\p@
  \begin{center}%
    {\LARGE \@title \par}%
    \vskip 1.5em% Added this
    {\Large \@subtitle \par}% and this
    \vskip 3em%
    {\large
     \lineskip .75em%
      \begin{tabular}[t]{c}%
        \@author
      \end{tabular}\par}%
      \vskip 1.5em%
    {\large \@date \par}%       % Set date in \large size.
  \end{center}\par
  \@thanks
  \vfil\null
  \end{titlepage}%
  \setcounter{footnote}{0}%
  \global\let\thanks\relax
  \global\let\maketitle\relax
  \global\let\@thanks\@empty
  \global\let\@author\@empty
  \global\let\@date\@empty
  \global\let\@title\@empty
  \global\let\title\relax
  \global\let\author\relax
  \global\let\date\relax
  \global\let\and\relax
}
\makeatother

\begin{document}

\title{Main Title}

\subtitle{Subtitle}

\author{Me}

\date{\today}

\maketitle

\end{document}

etoolbox或者,使用's 的不太混乱的版本\patchcmd

\documentclass{book}

\usepackage{etoolbox}

\makeatletter
\def\subtitle#1{\gdef\@subtitle{#1}}
\patchcmd\maketitle
  {{\LARGE \@title \par}}
  {{\LARGE \@title \par}%
   \vskip 1.5em
   {\Large \@subtitle \par}}
\makeatother

\begin{document}

\title{Main Title}

\subtitle{Subtitle}

\author{Me}

\date{\today}

\maketitle

\end{document}

相关内容