如何使用 KOMA 的 scrartcl 获取左侧的标题、作者和日期?

如何使用 KOMA 的 scrartcl 获取左侧的标题、作者和日期?

我使用scrartclKOMA 提供的课程来编写所有报告。我希望标题、作者和日期位于左侧(而不是居中)。

根据我曾经在德语论坛上找到的提示,我尝试了以下操作:

\documentclass[english]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\setcounter{secnumdepth}{0}

\addtokomafont{title}{\raggedright}
\addtokomafont{author}{\raggedright}
\addtokomafont{date}{\raggedright}

\begin{document}

\title{My report}

\author{Joe User}
\maketitle

\section{Introduction}

Some intro
\end{document}

这几乎产生了预期的结果,只是作者前面有一小段空白:

在此处输入图片描述

我在这里做错了什么吗?正确的方法是什么?

答案1

KOMA-Script 与标准类一样,使用tabular环境来设置作者。代码如下:

\begin{tabular}[t]{c}%
  \@author
\end{tabular}

如您所见,此声明中未删除初始和最终列分隔符。因此,如果您误用字体设置来尝试强制作者左对齐,则只有表格将左对齐,但表格仍以宽度为 的列分隔符开始\tabcolsep

您可以使用包xpatch来更改中的表格声明\@maketitle。如果您已经这样做了,您还可以center用环境替换环境flushleft,并避免字体设置的丑陋误用:

\documentclass[english]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\setcounter{secnumdepth}{0}

\usepackage{xpatch}
\makeatletter
\xpatchcmd{\@maketitle}{\begin{center}}{\begin{flushleft}}{}{}
\xpatchcmd{\@maketitle}{\end{center}}{\end{flushleft}}{}{}
\xpatchcmd{\@maketitle}{\begin{tabular}[t]{c}}{\begin{tabular}[t]{@{}l@{}}}{}{}
\makeatother

\begin{document}

\title{My report}

\author{Joe User}
\maketitle

\section{Introduction}

Some intro
\end{document}

article此补丁也可用于标准类。

如果有多个作者,以 分隔,您也可以在 的定义内\and更改 的定义,例如\and\maketitle

\xpatchcmd{\maketitle}{%
  \def\and{%
    \end{tabular}%
    \hskip 1em \@plus.17fil%
    \begin{tabular}[t]{c}%
  }%
}{%
  \def\and{%
    \end{tabular}\\
    \begin{tabular}[t]{@{}l@{}}%
  }%
}{}{}

不再让作者并排,而是一排排地排列。最后一个补丁不适用于标准类。对于标准类,您只需重新定义\and

\renewcommand*\and{%
  \end{tabular}\\
  \begin{tabular}[t]{@{}l@{}}%
}%

没有\xpatchcmd

\maketitle如果您想要一个干净的解决方案:如果您不喜欢,请不要使用默认设置。如果您需要比类提供的更多自由,请定义您自己的标题。

答案2

在 中scrartcl.cls,您可以在 的定义中观察到以下内容\maletitle

[...]
{%
  \usekomafont{author}{%
    \lineskip .5em%
    \begin{tabular}[t]{c}
      \@author
    \end{tabular}\par
  }%
}%
[...]

正如 Schweinebacke 在评论中强调的那样,该伪影实际上是由表格的左边距引起的。因此,您可以将其重新定义如下:

{%
  \usekomafont{author}{%
    \lineskip .5em%
    \begin{tabular}[t]{@{}c@{}}%<=== removed left and right columnsep
      \@author
    \end{tabular}\par
  }%
}%

在此处输入图片描述

然而,当心!!不是直接修改源代码scrartcl.cls。复制一份,做一些修改并更改新文件的名称和序言(基本上,创建一个“modifiedscrartcl”类)。

相关内容