当谈到 KOMA-Script 时,大多数人会提到它的课程scrbook
,,也许scrreprt
scrartcl
scrlttr2
。但并不是每个人都知道,该软件包的一部分还包括一些包,可以与其他类一起使用比 KOMA-Script 的要多。
让我们在这里概述一下这些软件包。请为每个软件包提供一个答案(功能非常相似的软件包除外),在名称旁边包含...
- 如果它更适合于包装相应的文档类编写器或处理文档的用户(或两者)。
- 文档所在位置,即主 KOMA-Script 文档
scrgiuen.pdf
(英语)/scrguide.pdf
(德语)或单独的文档。 - 封装特性概述。
- 如果可能的话,举一个简短的例子。
- 也许可以链接到使用此包的 TeX.SE 上的一些现有答案。
答案1
scrextend
该包使 KOMA-Script 类的基本功能可供其他类使用,因此延伸它们。它主要面向文档编写者,但也可供包和类编写者使用。描述可在主 KOMA-Script 文档中找到。
正如文档中明确指出的那样,这个包应该不是与 KOMA-Script 类一起使用。
功能概述:
提前或延迟选项选择:选项可以以键值对的形式给出,不仅可以使用
\documentclass
相应的\usepackage
,还可以在序言中以及甚至在文档中使用\KOMAoption
或 的大多数选项中给出\KOMAoptions
。草稿模式的增强:还为最初未定义的类提供超出行的标记,参见草稿模式有什么变化?
文件标题:此功能必须作为包选项激活,但随后可以使用增强的 KOMA-Script 功能和
\maketitle
环境titlepage
。看如何在 \author{} 中跨越 \textit{} 和 \Large 几行并比较我的答案与其他人或标题页左侧浮动图片(
scrextend
在答案的末尾)。字体大小选择:选择任何所需的字体大小,而不是有限的标准类集,它也比包更灵活
extsizes
。当然,必须加载可缩放字体,无论是显式加载还是通过加载fontenc
和cm-super
安装。看看这个:
\documentclass{article} \usepackage[T1]{fontenc} \usepackage[fontsize=14pt]{scrextend} \usepackage{kantlipsum}% for some filler text \begin{document} \kant[160-164] \end{document}
也可以看看如何指定小于 10pt(或大于 12pt)的字体大小?或第二部分lockstep 的回答到如何用 beamer 设置较小的默认字体大小?。
增强的文本标记机会:提供了,对于一组有限的元素,可以使用
\textsubscript
命令等,而在标准类中,通常必须重新定义内部命令。支持的元素包括(和,仅对标题标记有效)、所有脚注元素和所有环境元素。\setkomafont
\addtokomafont
title
disposition
dictum
labeling
参见如何在 \author{} 中跨越 \textit{} 和 \Large 几行(上面已经链接)和具有固定标签宽度的描述类环境。
偶数页和奇数页的检测:
\ifthispageodd
提供了一个命令。例子:如果则否则奇数页/偶数页。
插页命令:附加功能可
\clearpage
提供更多灵活性。KOMA-Script 的脚注功能,但对于某些功能,
\deffootnote
必须使用该命令才能激活。示例
\deffootnote
:多行脚注的布局,文本和脚注中的脚注标记格式不同,脚注编号请用括号/圆括号括起来和如何在文本主体中设置上标脚注标记但在脚注中设置正常大小?。 在不同的地方引用同一个脚注您可以看到命令的\footref
实际运行。格言、警句、口号章节和部分。
增强描述列表
labeling
。例子:使描述项的行对齐,将符号列表与破折号对齐和具有固定标签宽度的描述类环境(上面已经链接)。
简单的边距变化与(trivlist)环境
addmargin
。边注类似于包。不要与 Markus Kohm 编写的
marginpar
包混淆。marginnote
答案2
软件包列表(包名称后面的链接指向答案):
scrbase
scrdate
和scrtime
scrextend
– 使 KOMA-Script 课程的一些功能可供其他课程使用。scrjura
– 律师和法律学者的合同环境scrlayer
scrlayer-notecolumn
scrlayer-scrpage
作为遗留包的后继者scrpage2
(遗留包本身有一个过时的前身scrpage
)scrlfile
– 控制包依赖关系scrwfile
tocbasic
tocstyle
typearea
另请参阅文件中的摘要README
(也包含在 TeX 发行版中)。
如果有的话,请添加缺少的包。
另外,没有 KOMA-Script 包,但也是由 Markus Kohm 编写的(请不要在这里回答):
gridset
:网格设置(也称为严格的寄存器内设置)是许多文档都需要完成的操作,但使用 LATEX 并不容易。包
gridset
有助于获取网格设置所需的信息。它不实现自动网格设置,但有一个命令\vskipnextgrid
,可以移动到下一个网格位置。在某些情况下,这可能就足够了。在其他情况下,它可能会失败。因此,网格设置只是网格设置的又一步,而不是完整的解决方案。GS1
:世界上有几种条形码包,但它们要么需要 PStricks,要么仅限于 EAN-13 条形码。最重要的是,它们都是 LATEX 2ε。我决定编写一个支持多种 GS1 代码的包,几乎与此同时,我决定给 L3 一个机会。所以我开始使用一个实验性的 GS1 包
expl3
。使用expl3
是编写此包的主要原因。GS1
还包含rule-D
:在 LATEX 2ε 中,您可以使用命令
\rule
来制作水平和垂直规则,甚至方框。目前没有用于此目的的 L3 命令。此模块为规则提供了两个新的 L3 函数。模块名称中的“-D”表示,当前实现使用了已弃用的函数,例如\tex_vrule:D
。不过,新规则函数并未声明为已弃用。luaindex
:使用 LuaTEX,在运行 LuaTEX 时调用 MakeIndex 之类的索引处理器不会有问题。因此用户不再需要自己调用索引处理器。但另一方面,Lua 拥有足够的能力来处理索引本身。为此
luaindex
制作了一个包。它主要由一个 Lua 模块组成:luaindex.lua
。它提供生成新索引(或多个新索引)、向其中添加条目并打印索引的功能。为了让世界变得更简单,还有一个额外的 LATEX 包:luaindex.sty
。marginnote
:在 LATEX 中,该命令
\marginpar[⟨left⟩]{⟨right⟩}
可用于在页边距中创建注释。但此命令存在一个问题:它会创建一种特殊的浮点数。因此,它不能用于例如浮点数或脚注。包marginnote
支持另一个命令\marginnote
来在页边距中创建注释。这不使用浮点数,因此不存在缺点\marginpar
。但可能存在其他问题...
[...]
注意:页边距注释将放置在当前垂直线上。这意味着,如果您\marginnote
在同一行使用两个命令,它们将被放在同一个位置。这不是错误,而是一个功能!pfarrei
:
Lua 脚本和软件包旨在帮助牧师和神父设置歌曲和祈祷书。目前只有德语文档可用,但 Lua 脚本提供了简短帮助:(texlua a5toa4.tlu -h
包装器脚本)或直接texlua pfarrei.tlu -h
。请注意,在撰写本文时,MiKTeX 中有一个错误,其中只有pfarrei.tlu
作品的执行,参见。包“pfarrei”中的 Lua 脚本无法正确执行,可能是由于库已过时。splitidx
/splitindex
:LATEX有
makeidx
一个标准包,用于为每个文档创建一个索引。但有时需要多个索引。不同的包有不同的解决方案和不同的问题来实现多个索引。这里还有一个。
[…]
在调用索引处理器之前,必须将一个原始索引文件拆分为多个原始索引文件。每个文件都包含一个索引的索引条目。可以使用程序完成此拆分splitindex
。titlepage
:
提供扩展的标题页,几种预定义的样式。大多数作者都不需要创建标题页。但现实并不完美,所以很多作者不得不这样做。2009 年,KOMA 启动了标题页项目,以
<http://www.komascript.de/titlepage>
收集真实的标题页并使用定义良好的界面来实现它们。因此,从一种标题页样式更改为另一种标题页样式将非常简单。尽管如此,实现新的标题页样式可能仍然很困难。但也许标题页项目的人会帮助你。问问吧!在撰写本文时,CTAN 上不可用,但仅在实验性 KOMA-Script 版本的存储库中可用,参见使用最新的 KOMA-Script 和 TeX Live、MacTeX 或 MiKTeX在 Markus Kohm 的网站上http://komascript.de。(笔记:http://www.komascript.de/titlepage是德语,但包装手册是英文的。
答案3
scrlfile
软件包scrlfile
主要赋予软件包作者权力,但普通用户也可以利用此软件包。
假设您想要运行一些代码,但前提是必须加载特殊软件包。或者您可能最终还是想阻止加载此软件包。没问题。
功能概述
scrlfile
让你可以运行代码BeforePackage{<packageName>}{<instructions>}
\documentclass{article} \usepackage{scrlfile} \BeforePackage{hyperref}{\typeout{Loading hyperref just now:}} \AfterPackage{hyperref}{\typeout{I am done with hyperref}} \usepackage{blindtext} \usepackage{hyperref} \begin{document} \blindtext \end{document}
当您想要修补软件包提供的命令时,这会非常有用。您可以对类(
\BeforeClass
、\AfterClass
)以及输入文件(\BeforeFile
、\AfterFile
)执行相同操作。更多信息可在文档scrguien.pdf
(texdoc.net 上的文档)。假设您的大学提供类和/或包文件,以便以公司设计的形式提交论文。包
framed
已加载,但出于某些原因,您想要用framed
替换mdframed
。\listfiles \documentclass{article} \usepackage{scrlfile} \ReplacePackage{framed}{mdframed} \usepackage{framed} % explicitly loaded just for this example \usepackage{blindtext} \begin{document} \blindtext \end{document}
请注意,包和类名没有文件结尾。
同样有趣的是:使 ltxdoc 类使用 report 作为底层类。
你正在与大学的班级一起工作,它会加载包 fontenc和inputenc。两者都有选项(应该绝不由类来完成)。假设您正在使用 LuaLaTeX,因此您不需要也不想加载这些包。您可以完全阻止它们加载,如下面的 MWE 所示。
\listfiles \documentclass{article} \usepackage{blindtext} \usepackage{scrlfile} \usepackage{ifluatex} \ifluatex \PreventPackageFromLoading[\typeout{Please don't do this, use package fontspec}]{inputenc,fontenc} \else \fi \usepackage[T1]{fontenc} \begin{document} \blindtext \end{document}
还有命令钩子来处理主辅助文件和宏来存储包列表。可以在 KOMA 脚本文档中找到示例。
答案4
Packagetocbasic
是另一个包,它定义了一些不仅对包作者有用的命令。
对于日常用户来说最有用的功能可能是
DeclareNewTOC[<options>]{<file etension>}
。
\DeclareNewTOC[%
type=remarkbox,%
types=remarkboxes,%
float,% define a floating environment
floattype=4,%
name=Remark,%
listname={List of Remarks}%
]{lor}
\setuptoc{lor}{chapteratlist}
这定义了浮动注释框,其使用方式与图形或表格完全相同。这几行代码可让您设置标题、备注列表以及使用 KOMA 功能时章节之间的小间隙。它autoref
也可以与超链接机制配合使用。
对于软件包作者来说,还有很多其他方便的东西。