我正在使用特定的书籍模板(和 .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}