我一直在尝试,现在我意识到可以通过几种方式使用 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
。
第二种选择:我知道我可以将BCOR
和DIV
直接设置为 KOMA 类的可选参数scrbook
。
第三种选择:因为我使用自己的.sty
文件,所以我可以设置BCOR
并DIV
使用\typearea[3mm]{12}
(参见 marito.sty)
第四种选择:此外,由于使用了我的marito.sty
文件,我可以设置BCOR
并DIV
使用\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
需要通过包重新计算。KOMAoptions
headheight
headinclude
\textheight
\topskip
\baselineskip
最后,我建议:
\documentclass[BCOR=<bcor>,DIV=calc,...]{scrbook}
在主文件中使用。
如果您的文件中字体有较大变化、行距有变化、KOMAoptions
页面布局有变化,请在更改完成后使用。marito.sty
\recalctypearea
请注意,您可以在日志文件中找到由 typearea 确定的所有值。如有必要,您可以<div>
通过设置适度调整的值\documentclass[BCOR=<bcor>,DIV=<div>,...]{scrbook}
。然后命令\recalctypearea
也将使用这个手动选择的<div>
值。