\LoadClass 和 \LoadClassWithOptions 之间的区别

\LoadClass 和 \LoadClassWithOptions 之间的区别

谁能告诉我这两个命令之间的区别?

编辑:谢谢您的回答,但我还没有找到线索。以下是示例:

测试.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}

在这两个例子中,选项a4paperoneside都传递给了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使用该命令,它将被应用。\LoadClassWithOptionsmyclass.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,并且用户可以在\documentclassmain.tex中指定其他选项,则myclass.cls:

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass[a4paper]{article}

来源:https://www.latex-project.org/help/documentation/clsguide-historic.pdf

相关内容