当标准 class(article、report、book)的体裁无法提供足够细致的设计控制时,通常会转向两大“什么都能做、并且可细调”的 class 系列:KOMA-Script 与 memoir。前者是一组带有精致西文排版默认值的直接替代 class;后者则是面向书籍 / 报告的全能 class,把许多 package 的功能整合到一个 class 中。本页介绍二者是什么、关键设置点,以及何时选择哪一个。
为什么替换标准 class
article / report / book 成熟可靠,但一旦作者想改默认边距、标题、页眉页脚,就往往会通过 \makeatletter 修改内部命令,或叠加 geometry、fancyhdr、titlesec、tocloft 等多个辅助 package。标准 class 本身的细节留给 Standard classes 页面;这里的要点是:它们设计自由度低,也缺少官方认可的修改入口。
KOMA-Script 和 memoir 正面回应这种不满。二者都可作为标准 class 的替代,并且都 从一开始就提供官方认可的设计修改命令和选项。不同之处在于出身和思想:KOMA-Script 是“具备良好排版默认值的替代 class + 设置机制”,memoir 则是“把整套辅助 package 功能吸收进来的单体书籍 class”。
KOMA-Script — 替代 class 群
KOMA-Script 是 Markus Kohm 开发并维护的一组 LaTeX2ε class 和 package(版权标示 1994–2026;本文写作时版本为 3.49.2,2026-02-02 发布),主要围绕标准 class 的直接替代构成。scrartcl 对应 article,scrreprt 对应 report,scrbook 对应 book,信函则有专用的 scrlttr2。正文写法(\section、\chapter 等)基本保持与标准 class 相同,但默认排版更精致,配置入口也大幅开放。
| KOMA class | 替代的标准 class | 用途 |
|---|---|---|
scrartcl | article | 论文和通用短/中篇文档 |
scrreprt | report | 有章的报告和学位论文 |
scrbook | book | 以双面为前提的书籍 |
scrlttr2 | letter | 信函(可定义多个信笺和版式) |
设置有两种方式:作为 class 选项传给 \documentclass[...]{scrartcl},或在加载后用 \KOMAoptions{...} 修改。KOMA-Script 具备“多数选项即使加载后也可修改”的机制;\KOMAoptions 可一次接受逗号分隔的 option=value 设置列表。若一个选项需要同时给多个值,使用 \KOMAoption{option}{val1,val2}。
版心区域 — DIV 与 BCOR
KOMA-Script 页面设计的核心是 typearea package(使用 KOMA class 时会自动加载,因此无需另写 \usepackage{typearea})。它不是直接用 mm 指定边距,而是 把页面在横向和纵向分成若干条带(strip),再由比例推导正文块和边距,这种思路源于排版师 Jan Tschichold 的做法。
决定分割数的是 DIV=。手册说明:“DIV=factor 选项指定构成版心时页面在横向和纵向被分成的条带数”;关键是 factor 越大,正文块越大、边距越小,也就是每页能容纳更多文字。factor 可取大于 4 的整数。A4 的默认值随正文大小变化:10pt 为 8,11pt 为 10,12pt 为 12。若想按字体自动计算,用 DIV=calc;若想要传统的“中世纪 page canon”风格,用 DIV=classic。
另一个是 BCOR=(binding correction,即装订修正 / 书脊余量)。把装订时会被卷入书脊而不可见的宽度给它,这部分会先从版心计算中扣除,输出时再加回内侧(左)边距。数值可使用 TeX 理解的任意单位(如 BCOR=10mm)。通过 \KOMAoptions 修改 DIV 或 BCOR 时,版心和边距会自动重新计算。
\documentclass[DIV=12,BCOR=10mm]{scrartcl}
% DIV=12 本文ブロックを広めに(A4・12pt 既定と同じ分割数)
% BCOR=10mm 綴じ代 10mm を内側余白へ確保
\usepackage[T1]{fontenc}
\usepackage{microtype}
\title{A Short Report}
\author{Ada Lovelace}
\begin{document}
\maketitle
\section{Introduction}
KOMA-Script keeps the body markup of \textsf{article}
while giving you DIV and BCOR for the page layout.
\end{document}如果稍后才加载字体 package,需要注意:把 DIV=calc 写作 class 选项时,版面会在你的字体加载前,按标准字体确定。更换字体后,可在导言区调用 \KOMAoptions{DIV=last}(或 DIV=current),按新字体重新计算。
调整 KOMA 体裁 — 元素字体与标题
KOMA-Script 可以为标题、图注等文档各个 element 的字体集中设置。\setkomafont{element}{commands} 会为该元素重新定义完整字体,\addtokomafont{element}{commands} 只是在现有定义上追加(\usekomafont{element} 会把当前字体切换为该元素的字体)。commands 应限于 \sffamily、\bfseries、\Large 等 只改变字体属性 的命令,并且都在导言区声明。
如果要重组章节命令本身的体裁(前后空白、字体、编号显示方式等),使用 \RedeclareSectionCommand[attributes]{name}。这是官方提供的入口,用逗号分隔的 key=value 设置重新定义现有章节命令(如 \section、\chapter 等)的属性。页眉页脚推荐配合 KOMA class 使用 scrlayer-scrpage package;它的 \lehead、\cohead、\rohead 等命令可分别设置“左 / 中 / 右” × “偶数 / 奇数页”的各个位置。
memoir — 全能书籍 class
memoir 是 Peter Wilson 于 2001 年首次发布、现在由 Lars Madsen 维护的 class。它的特点是 以标准 book class 为基础,把许多与设计相关的 package 功能整合进一个 class。按作者的说法,它“包含许多 package 的功能,例如用于控制目录的 tocloft package,以及类似 fancyhdr package 的自定义页眉方法”(但不涉足数学或 babel / hyperref 的领域)。它可作为 book 和 report class 的替代,默认输出几乎与二者难以区分,同时也提供接近 article 风格的选项;最重要的是,它本来就是为“可以调整并设计”而做的。
页面布局用专用命令组装。\setlrmarginsandblock{spine}{edge}{ratio} 设置左右(书脊侧 spine 与外口侧 edge)边距;页面宽度保持固定,正文块宽度由这些边距推算。\setulmarginsandblock{upper}{lower}{ratio} 以同样方式设置上下边距。两者的第三个参数都是比例;希望由系统计算的值可以写成 *。
关键在于,这些指定只声明还不会生效。只有调用 \checkandfixthelayout 后,布局才会确定(手册说:“除非你满足于默认页面布局,否则在指定想要的布局后,必须调用 \checkandfixthelayout 命令来最终实现你的指定”)。章标题的体裁用 \chapterstyle{style} 切换;它像 \pagestyle 一样设置后续章标题的样式,并附带许多预定义样式:default(熟悉的 book 风格)、section(编号和标题在一行)、hangnum(章号悬挂到边注处)、companion(LaTeX Companion 风格)等。它尤其适合书籍设计。
\documentclass[11pt,a4paper,twoside]{memoir}
% --- page layout (must end with \checkandfixthelayout) ---
\setlrmarginsandblock{30mm}{25mm}{*} % spine, fore-edge
\setulmarginsandblock{30mm}{35mm}{*} % upper, lower
\checkandfixthelayout
\chapterstyle{hangnum}
\begin{document}
\chapter{Beginnings}
memoir bundles page layout, headers, and chapter styles
into one configurable book class.
\end{document}何时选择哪一个
KOMA-Script 和 memoir 目标相近,二者都能做出高质量文档。经验上,如果是论文、报告等从标准 class 自然升级,并希望有精致的默认排版和 DIV/BCOR 带来的清晰版面控制,就选 KOMA-Script。如果要 把一本书的细节都设计到位,布局、页眉、章样式、目录都能在一个 class 内完成的 memoir 更合适。二者思想不同,不要混用;每份文档选择其中一个。
不过,以日文为主体的文档,基本应使用专门面向日文组版的 class。日文的行距、禁则处理、全角间距等属于专用 class 的职责范围,应使用 jsarticle / jsbook(jsclasses)、其 LuaLaTeX 版本 ltjsarticle / ltjsbook,或较新的 jlreq。请把 KOMA-Script 和 memoir 视为西文文档的选择,注意它们与日文 class 的目的不同。如果目标是幻灯片,则另一个系统的 beamer class 是标准选择。
从标准 class 迁移的步骤
把现有稿件迁移到 KOMA-Script 或 memoir 时,不要一次性重做全部外观。先只把 class 从 article 改为 scrartcl,或从 book 改为 memoir,确认相同的正文结构能够编译。之后再按边距、页眉页脚、标题、目录的顺序逐项设置,并在每一步查看 PDF 差异。
- KOMA-Script — 在使用
geometry之前,先看DIV和BCOR能否解决版面问题。 - memoir — 不要忘记在布局声明的最后放置
\checkandfixthelayout。 - 二者共通 — 不要盲目叠加面向标准 class 的辅助 package,如
titlesec、fancyhdr、tocloft。 - 日文稿件 — 不要把西文 class 的设计假设强行套到日文正文上;先考虑 jsclasses 或 jlreq。
记录设计修改,便于回退
使用 KOMA-Script 或 memoir 的稿件,在撰写正文时也常会想试调边距和标题。外观调整不要散落在正文附近,而应集中到导言区的小区块中,例如“页面设计”“标题”“页眉页脚”,并用简短注释说明为什么选择该值。这样以后出版社、学会或课程要求改回指定尺寸时,就能一眼追踪到到底是哪项设置在生效。
% Page design: keep the knobs in one place
\KOMAoptions{DIV=12,BCOR=8mm}
% \RedeclareSectionCommand[...] {section} % heading design lives here
% For memoir, finish all layout knobs before the check
% \setlrmarginsandblock{30mm}{25mm}{*}
% \setulmarginsandblock{30mm}{35mm}{*}
% \checkandfixthelayout如果原本为标准 class 加入的 geometry、fancyhdr、titlesec、tocloft 继续保留,它们可能会与 KOMA-Script 或 memoir 提供的官方设置接口冲突。迁移时,先确认能否用 class 本身的命令达成相同目的,只把确实仍然需要的辅助 package 加回来。