在自定义类中加载 scrartcl 时无法指定纸张尺寸

在自定义类中加载 scrartcl 时无法指定纸张尺寸

默认情况下,我的系统会生成 A4 文档。如果我想将纸张大小设置为 US Letter,我可以将选项传递letterpaper给 scrartcl:

\documentclass[letterpaper]{scrartcl}
\begin{document}
Hello, World!
\end{document}

但是如果我创建自己的扩展 scrartcl 的类,我就无法letterpaper在类文件中传递该选项。例如,这不起作用(生成的文档具有 A4 纸张尺寸):

麦克韦

\documentclass{mcve}
\begin{document}
Hello, World!
\end{document}

麦克韦

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mcve}

\LoadClass[letterpaper]{scrartcl}

如果我将其替换scrartcl为,则可行article(尽管我还必须在两种情况下加载几何包以使 PDF 纸张大小匹配)。更有趣的是,这也可以工作:

麦克韦

\documentclass[letterpaper]{mcve}
\begin{document}
Hello, World!
\end{document}

麦克韦

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mcve}

\LoadClassWithOptions{scrartcl}

如何letterpaper在我的课程文件中设置该选项?

答案1

正如@Schweinebacke所说,letterpaper是的选项typearea,而不是的选项scrartcl。传递给的选项\documentclass成为全局选项,这些选项会传播到\documentclass声明后加载的所有类和包,而传递给的选项\LoadClass成为本地选项,这些选项仅传递给正在加载的类文件,而不是它加载的包和类。

为了解决这个问题,我需要在我的类文件中明确设置包letterpaper的选项:typearea

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mcve}

\PassOptionsToPackage{letterpaper}{typearea}
\LoadClass{scrartcl}

更多信息请参见适用于课程和软件包编写者的 LaTeX2e以及这个答案

相关内容