不久前,我在 StackExchange 上了解到我可以创建一个样式文件来包含我的序言,特别是包含布尔开关,以便根据需要选择序言的某些部分。
到目前为止,这一直运行良好。但是,我现在遇到了一个问题,即软件包似乎与 Koma 类不兼容。这是我的序言样式文件,归结为要点:
\ProvidesPackage{mypreamble}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{family=MO,prefix=MO@}
\DeclareBoolOption[true]{nokoma}
\ProcessKeyvalOptions*
% THE FOLLOWING 3 PACKAGES SEEM INCOMPATIBLE WITH KOMA
\ifMO@nokoma
{
\usepackage{natbib}
\usepackage{bibentry}
\usepackage{sectsty}
}
\else
{
}
\fi
\usepackage[english]{babel}
\usepackage{lipsum}
\endinput
当我编写 Koma 信件时,这是没问题的,请看以下最小示例:
\documentclass{scrlttr2}
\usepackage[nokoma=false]{mypreamble}
\begin{document}
\begin{letter}{addressee}
\lipsum
\end{letter}
\end{document}
然而,标准文章不再可行,如下程序所示:
\documentclass{article}
\usepackage[nokoma=true]{mypreamble}
\begin{document}
\lipsum
\end{document}
如上所述,这里采用的方法在包含或排除我的序言中的特定部分时通常没有问题。然而,上述布尔开关、所讨论的三个包和 Koma 之间的相互作用不再起作用。
如果您能提供任何关于如何解决此问题的建议,我将不胜感激。谢谢!
答案1
您将软件包包含在一个组中,因此它们的所有定义都被丢弃了}
\ProvidesPackage{mypreamble}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{family=MO,prefix=MO@}
\DeclareBoolOption[true]{nokoma}
\ProcessKeyvalOptions*
% THE FOLLOWING 3 PACKAGES SEEM INCOMPATIBLE WITH KOMA
\ifMO@nokoma
\usepackage{natbib}
\usepackage{bibentry}
\usepackage{sectsty}
\fi
\usepackage[english]{babel}
\usepackage{lipsum}
\endinput