谁能告诉我这两个命令之间的区别?
编辑:谢谢您的回答,但我还没有找到线索。以下是示例:
测试.tex
\documentclass[a4paper,oneside]{mytestclass}
...
我的测试类.cls
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{testclass}[2011/01/30 v0.1 testclass]
\LoadClass{book}
或者
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{testclass}[2011/01/30 v0.1 testclass]
\LoadClassWithOptions{book}
在这两个例子中,选项a4paper
和oneside
都传递给了book
。因此,我没有看到结果有任何区别。
答案1
\LoadClass[options]{name}
负载等级姓名使用列出的选项
\LoadClassWithOptions{name}
加载类姓名使用与当前类相同的选项。例如
\documentclass[foo,bar]{baz}
里面baz.cls
可以有一个
\LoadClassWithOptions{book}% is loaded with options `foo` and `bar`
或者
\PassOptionsToClass{\CurrentOption}{name}
...
\LoadClass[default options]{name}
答案2
命令
\LoadClassWithOptions{class}
将加载班级使用主文档中指定的选项。
命令
\LoadClass[options]{class}
将加载班级使用指定的选项和不包括主文档的选项。
在您的示例中,您可能看不到太大的差异,因为指定的选项\documentclass
可能是默认选项scrbook
。
但请考虑这个文件的例子baseclass.cls
:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{baseclass}[2011/01/30 v0.1 baseclass]
\LoadClass{article}
\def\funny{Is not funny}
\DeclareOption{funny}{\def\funny{Is funny!}}
\ProcessOptions\relax
然后myclass.cls
:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}[2011/01/30 v0.1 myclass]
\LoadClass{baseclass}
和main.tex
:
\documentclass[funny]{myclass}
\begin{document}
\funny
\end{document}
即使指定了该funny
选项,它也不会在 中应用。但是,如果您在 中baseclass
使用该命令,它将被应用。\LoadClassWithOptions
myclass.cls
答案3
来自适用于类和包编写者的 LATEX2ε指导:
一个 LATEX 类可以加载另一个类,如下所示:
\LoadClass[<options>]{<class-name>}[<date>]
在常见情况下,您可以使用以下命令:您只需加载一个类或包文件,其中包含当前类正在使用的选项。
\LoadClassWithOptions{<class-name>}[<date>]
\RequirePackageWithOptions{<package>}[<date>]
不能在主文档中使用\LoadClass
或\LoadClassWithOptions
后 \documentclass
,仅在.cls
加载时才有效。这会导致错误。但是,如果您确实需要,可以使用此宏前。\documentclass
在这种情况下,尚未设置任何主类选项,因此\LoadClassWithOptions
根本没有意义。
答案4
我自己也经历过。为了在现有答案的基础上添加更具体的答案。
主要.tex:
\documentclass[a4paper,9pt]{myclass}
\begin{document}
Test
\end{document}
如果您始终想使用选项并想忽略在main.tex 中a4paper,11pt
指定的用户选项,那么 myclass.cls:\documentclass
\LoadClass[a4paper,11pt]{article}
如果您想要在 main.tex 中指定的用户选项\documentclass
,并且仅此而已,那么 myclass.cls:
\LoadClassWithOptions{article}
这就是为什么\LoadClassWithOptions
没有可选参数[<options-list>]
如果始终要使用选项a4paper
,并且用户可以在\documentclass
main.tex中指定其他选项,则myclass.cls:
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass[a4paper]{article}
来源:https://www.latex-project.org/help/documentation/clsguide-historic.pdf