\LoadClass 选项中宏的奇怪行为

\LoadClass 选项中宏的奇怪行为

考虑包含以下内容的类文件 mwe.cls

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mwe}[2022/09/26]
\def\myGreatMacro{twoside=false}
\LoadClass[a4paper,\myGreatMacro]{scrreprt}%% warning about ununsed option
%\LoadClass[a4paper,twoside=false]{scrreprt}%% no warning
\endinput

输入文件 mwe.tex 包含

\documentclass{mwe}
\begin{document}
\end{document}

跑步latex mwe.tex吐出

LaTeX Warning: Unused global option(s):
    [twoside=false].

twoside=false但是,如果我们直接发出选项\LoadClass(而不是通过宏),警告就会消失。为什么?实际上,在每种情况下,哪些选项传递给 scrreprt?如何将宏内容作为选项传递给\LoadClass

答案1

不需要特殊的类。你可以在普通文档中测试它:

\newcommand\myoption{twoside=true}
\documentclass[a4paper,\myoption]{scrreport}
\usepackage[pass,showframe]{geometry}
\usepackage{lipsum}
\begin{document}
abc \newpage abc
\end{document}

给出一份不在两侧的文档。

KOMA 处理键值,和大多数键值处理程序一样,不喜欢您在命令中隐藏键值。

将整个选项列表放在命令中有什么作用:

\newcommand\myoption{a5paper,twoside=true}
\documentclass[\myoption]{scrreport}
\usepackage[pass,showframe]{geometry}
\usepackage{lipsum}
\begin{document}
abc \newpage abc
\end{document}

相关内容