我希望frontmatter
应该在单列(一列)中。\maketitle
内容应该在后面3 columns
。如何在 LaTeX 类文件中进行控制?
我的 LaTeX 文件:
\documentclass{owns}
\begin{document}
\title{Book Title}
\author{Balaji, K.\/}
\maketitle
\begin{multicols}{3}
...
\end{multicols}
\end{document}
类文件代码为:
\def\@maketitle{%
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\LARGE \@title \par}%
\vskip 1.5em%
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em%
{\large \@date}%
\end{center}%
\par
\vskip 1.5em
\begin{multicols}{3}
}
\AtEndDocument{\end{multicols}}
但它不起作用。如何实现这一点?
答案1
如果您想要multicols
在后台应用而不是将其作为环境添加到文档主体,那么您需要确保它在 之后自动启动\maketitle
并在 之前关闭\end{document}
。
您尝试使用的\AtEndDocument
方式没有问题,但您放置\begin{multicols}{3}
inside的位置\@maketitle
是错误的。我不知道\maketitle
您的“owns”类中的代码是什么样子,但如果它是按照标准类中的定义建模的,book.cls
那么假设\@maketitle
inside 在组内被调用,然后会产生错误。因此,开始的正确位置是在 的最末端\maketitle
,而不是 的末尾\@maketitle
。
以该类为例book
:
\documentclass[notitlepage]{book}
\usepackage{etoolbox} % for the \appto cmd
\appto\maketitle{\begin{multicols}{3}}
\AtEndDocument{\end{multicols}}
\usepackage{multicol}
\usepackage{lipsum}
\begin{document}
\title{Book Title\thanks{A class using multicols}}
\author{Balaji, K.\/\thanks{And some more thanks}}
\maketitle
\lipsum[1-2]
\end{document}
结果你将获得: