KOMA 中的 DIV 和 BCOR 设置(最佳实践)

KOMA 中的 DIV 和 BCOR 设置(最佳实践)

我一直在尝试,现在我意识到可以通过几种方式使用 KOMA 类设置类型区域,我想知道哪种方式是正确的。

\documentclass[%
a4paper,
12pt,
%BCOR=3mm, %<---Should I load it here or in 'marito.sty'?
%DIV=12, %<---Should I load it here or in 'marito.sty'?
twoside,%default
]{scrbook}

\usepackage{marito}

\begin{document}
Recto Page
\newpage
Verso Page
\end{document}

第一个选项:我知道 KOMA 默认是a4paper,如果我将字体设置为 ,12pt它会自动默认为DIV=12

第二种选择:我知道我可以将BCORDIV直接设置为 KOMA 类的可选参数scrbook

第三种选择:因为我使用自己的.sty文件,所以我可以设置BCORDIV使用\typearea[3mm]{12}(参见 marito.sty)

第四种选择:此外,由于使用了我的marito.sty文件,我可以设置BCORDIV使用\KOMAoptions{DIV=12,BCOR=12mm}

其中包含的内容marito.sty

\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}
%\typearea[3mm]{12} % <---Should I use this one
%\KOMAoptions{DIV=12,BCOR=3mm} %<--- or this one?
\RequirePackage{lmodern}

\RequirePackage[pass,showframe]{geometry} % Just to show the frame around the textbox

正如评论中提到的,我已经测试了所有可能性,它们似乎都有效。我的问题是,当您使用自定义文件BCOR时,正确的设置方法是什么?DIV.sty

答案1

请注意,KOMA-Script 类会加载包typearea本身,并会立即计算文本块和边距。

第一个版本和第二个版本相同(如果第二个版本选择了标准值):文本主体和边距只计算一次。

第三个版本:调用时,将对页面布局进行第二次计算\typearea[<bcor>]{<div>}。已完成的行距和KOMAoptions页面布局更改均已考虑在内。

第三版和第四版之间也存在差异。摘自 KOMA-Script 手册:

如果 BCOR 和 DIV 都需要更改,则建议使用 \typearea,因为这样文本块和边距只需重新计算一次。使用 \KOMAoptions{DIV=DIV ,BCOR=BCOR } 时,文本块和边距会因 DIV 的更改而重新计算一次,因 BCOR 的更改而重新计算一次。


我建议将该选项设置BCOR为 KOMA 类的参数,因为它取决于文档本身,尤其是页数。


请注意,预定义DIV值只是一种折衷,并没有考虑所选的字体。我建议使用DIV=calc预定义值。

这是一个简单的例子来说明差异:

\documentclass[BCOR=3mm,12pt]{scrbook}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\KOMAoptions{DIV=calc}% recalculate the page layout with a calculated DIV value
\usepackage{blindtext}

\begin{document}
\blinddocument
\end{document}

以下日志文​​件片段显示计算DIV值为 9,而不是预定义值 12:

...
(C:\LocalPrograms\LocalTeXMFs\koma-script-current\tex\latex\koma-script\typeare
a.sty
Package: typearea 2014/04/09 v3.13.1756 KOMA-Script package (type area)

Package typearea, 2014/04/09 v3.13.1756 KOMA-Script package (type area)
                  Copyright (C) Frank Neukam, 1992-1994
                  Copyright (C) Markus Kohm, 1994-

\ta@bcor=\skip41
\ta@div=\count79
\ta@hblk=\skip42
\ta@vblk=\skip43
\ta@temp=\skip44
\footheight=\skip45
Package typearea Info: These are the values describing the layout:
(typearea)             DIV  = 12
(typearea)             BCOR = 8.53581pt
(typearea)             \paperwidth      = 597.50793pt
(typearea)              \textwidth      = 441.7291pt
(typearea)              DIV departure   = -4%
(typearea)              \evensidemargin = 25.89203pt
(typearea)              \oddsidemargin  = -14.65317pt
(typearea)             \paperheight     = 845.04694pt
(typearea)              \textheight     = 635.5pt
(typearea)              \topmargin      = -41.72441pt
(typearea)              \headheight     = 18.125pt
(typearea)              \headsep        = 21.75pt
(typearea)              \topskip        = 12.0pt
(typearea)              \footskip       = 50.75pt
(typearea)              \baselineskip   = 14.5pt
(typearea)              on input line 1332.
)
...
...
DIV calculation for typearea with good linewidth.
LaTeX Font Info:    Try loading font information for T1+lmr on input line 4.
(C:\LocalPrograms\MiKTeX2.9\tex\latex\lm\t1lmr.fd
File: t1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
)
Package typearea Info: These are the values describing the layout:
(typearea)             DIV  = 9
(typearea)             BCOR = 8.53581pt
(typearea)             \paperwidth      = 597.50793pt
(typearea)              \textwidth      = 392.64809pt
(typearea)              DIV departure   = 0%
(typearea)              \evensidemargin = 58.6127pt
(typearea)              \oddsidemargin  = 1.70717pt
(typearea)             \paperheight     = 845.04694pt
(typearea)              \textheight     = 577.5pt
(typearea)              \topmargin      = -18.25089pt
(typearea)              \headheight     = 18.125pt
(typearea)              \headsep        = 21.75pt
(typearea)              \topskip        = 12.0pt
(typearea)              \footskip       = 50.75pt
(typearea)              \baselineskip   = 14.5pt
(typearea)              on input line 4.
...

但是正如我已经提到的,KOMA-Script 类会加载包typearea本身,此时类选项DIV=calc会根据 LaTeX 标准字体评估为一个值。

在加载具有明显不同字体的包(lmodern与标准字体类似)后,您必须使用\KOMAoptions{DIV=calc}或重新计算该值\typearea[current]{calc}。您可以说\recalctypearea是否DIV=calc已为之前计算的文本块和边距设置。是或 的\recalctypearea缩写命令。\KOMAoptions{DIV=last}\typearea[current]{last}

此外,如果您更改页面布局(等)以及更改行扩展(以确保较小值为的倍数),则typearea需要通过包重新计算。KOMAoptionsheadheightheadinclude\textheight\topskip\baselineskip


最后,我建议:

\documentclass[BCOR=<bcor>,DIV=calc,...]{scrbook}在主文件中使用。

如果您的文件中字体有较大变化、行距有变化、KOMAoptions页面布局有变化,请在更改完成后使用。marito.sty\recalctypearea

请注意,您可以在日志文件中找到由 typearea 确定的所有值。如有必要,您可以<div>通过设置适度调整的值\documentclass[BCOR=<bcor>,DIV=<div>,...]{scrbook}。然后命令\recalctypearea也将使用这个手动选择的<div>值。

相关内容