为什么传递给 \LoadClass 的这些选项被忽略了?

为什么传递给 \LoadClass 的这些选项被忽略了?

考虑以下简单示例:

% === this is simple.tex ===
\documentclass[paper=a5,pagesize]{scrbook}
\usepackage{lipsum}
\begin{document}
\lipsum{1-10}
\end{document}

使用 处理此源文件时pdflatex,输出文件具有正确的 DIN A5 格式的页面大小。现在,出于某些原因,我想介绍我自己的文档类:

% === this is myclass.cls ===
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}[2014/07/01 1.0 current]
\LoadClass[paper=a5,pagesize]{scrbook}

% === this is withclass.tex ===
\documentclass{myclass}
\usepackage{lipsum}
\begin{document}
\lipsum{1-10}
\end{document}

如您所见,我传递了完全相同的选项。在这种情况下,输出文件是使用系统默认页面大小创建的,在我的情况下是 DIN A4。我怀疑参数以某种方式没有以\LoadClass相同的方式传播 - 这是正确的吗?我该怎么办?

答案1

我在其中一个相关文章中找到了一个解决方案:我需要将选项typearea明确传递给包。

% === this is myclass.cls ===
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}[2014/07/01 1.0 current]
\PassOptionsToPackage{paper=a5,pagesize}{typearea}
\LoadClass[paper=a5,pagesize]{scrbook}

答案2

我对这个主题的熟悉程度非常低,但出于某种原因,明确地将选项传递给班级scrbook似乎也有效

% === this is myclass.cls ===
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}[2014/07/01 1.0 current]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrbook}}
\ProcessOptions\relax
\LoadClass{scrbook}

% === this is withclass.tex ===
\documentclass[paper=a5,pagesize]{myclass}
\usepackage{lipsum}
\begin{document}
\lipsum{1-10}
\end{document}

相关内容