如何防止 beamer 类删除我的全局选项

如何防止 beamer 类删除我的全局选项

我目前正在编写一个 latex 包(或者实际上是一个 beamer 主题,但显然这没什么区别),并且我希望能够使用全局选项中的键值对指定一些内容。但是当使用 beamer 类时,这会失败。

举一个简单的例子,如下:

文档:

\documentclass[key=bla]{beamer}
\usepackage{needsoption}
\begin{document}
 \MOPstore
\end{document}

包裹:

\ProvidesPackage{needsoption}
\RequirePackage{pgfopts}
\pgfkeys{
    /MOP/.cd,
    key/.store in=\MOPstore
}
\ProcessPgfOptions{/MOP}

即使明确指定了选项,\ProcessPgfOptions 也从不处理它。如果我在本地指定选项(即\usepackage[key=bla]{needsoption}),则一切正常;如果我删除值(即\documentclass[key]{beamer}),则一切正常;如果我\documentclass[key=bla]{article}再次切换到不同的文档类(例如),则一切正常。我也尝试使用 kvoptions 而不是 pgfopts,但遇到了同样的问题。

因此,我由此推断,似乎 beamer 类中的某些东西会从全局选项列表中删除键值选项,同时保留其他选项不变。所以我想我有两个问题:首先,我真的想知道为什么会发生这种情况;其次,我该如何防止 beamer 类出现这种情况?如果无法解决问题,我也会接受告诉我如何解决这个问题的答案。

答案1

我不确定,但您需要将选项传递给您的包,因为您的包不会主动寻找选项。也可能是beamer不会尝试每个包的选项。

如果选项被专门传递给包,则以下内容有效。我已更改key为,mykey因为被内部选项混淆是自找麻烦。

\begin{filecontents*}{needsoption.sty}
\ProvidesPackage{needsoption}
\RequirePackage{pgfopts}
\pgfkeys{
    /MOP/.cd,
    mykey/.store in=\MOPstore
}
\ProcessPgfOptions{/MOP}
\end{filecontents*}

\PassOptionsToPackage{mykey=bla}{needsoption}

\documentclass{beamer}
\usepackage{filecontents}
\usepackage{needsoption}

\begin{document}
\begin{frame}
\MOPstore   
\end{frame}
\end{document}

相关内容