使用作者块的新类

使用作者块的新类

我在此示例中创建了一个简单的 .cls 文件。我想使用authblkblocks模式。

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{testclass}[2019/10/18 Test class]

\LoadClass[onecolumn]{article}
\RequirePackage[utf8]{inputenc}
\usepackage[english]{babel}

\DeclareOption{twocolumn}{\OptionNotUsed}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax

\RequirePackage[blocks]{authblk}
\setlength{\affilsep}{0em}

\renewcommand{\maketitle}{%
  \thispagestyle{empty}%
  \vskip-36pt%
  {\raggedright\sffamily\bfseries\MakeUppercase{\@title}\par}%
  \vskip10pt
  {\raggedleft\sffamily \@author\par}
  \vskip18pt%
}

然后这里是使用上述类的简单 .tex 文件。

\documentclass[10pt,a4paper]{testclass}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\author{author1}
\author{author2}
\affil{affil1}
\author{author3}
\author{author4}
\affil{affil2}
\title{Test Author Block}
\begin{document}
\maketitle
\end{document}

当有多个作者时,我收到以下错误:

! Misplaced \crcr. \endtabular ->\crcr 
                    \egroup \egroup $\egroup  l.14 \maketitle

当以脚注样式使用隶属关系时,它可以编译且不会出现任何错误。

\author[1]{author1}
\author[2]{author2}
\affil[1,2]{affil1}
\author[3]{author3}
\author[4]{author4}
\affil[3,4]{affil2}

课堂上出了什么问题?

答案1

答案很可能来得太晚了,但对于像我一样的人来说可能有用。我为同样的问题绞尽脑汁几个小时。

我最终在 的文档中找到了解决方案authblk。实际上,在 的包实现细节中,默认情况下authblk.dtx不包含在 中authblk.pdf(至少在 TeX Live 中)。从部分基本理念

显然,的定义\and必须与输出的环境兼容\@author

默认情况下,\and需要在环境中使用tabular。重新定义\and即可解决问题。例如,将以下内容添加到类定义中:

\renewcommand{\and}{\vskip10pt}

完整的测试类定义将是:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{testclass}[2019/10/18 Test class]

\LoadClass[onecolumn]{article}
\RequirePackage[utf8]{inputenc}
\usepackage[english]{babel}

\DeclareOption{twocolumn}{\OptionNotUsed}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax

\RequirePackage[blocks]{authblk}
\setlength{\affilsep}{0em}
\renewcommand{\and}{\vskip10pt} % <- new line

\renewcommand{\maketitle}{%
  \thispagestyle{empty}%
  \vskip-36pt%
  {\raggedright\sffamily\bfseries\MakeUppercase{\@title}\par}%
  \vskip10pt
  {\raggedleft\sffamily \@author\par}
  \vskip18pt%
}

编译您的示例然后会产生以下内容而没有任何错误。

在此处输入图片描述

相关内容