如何使用 pgfkeys 定义后备密钥

如何使用 pgfkeys 定义后备密钥

我用它pgfkeys来定义一些键值选项。我需要一些默认值来初始化一个键,并且我还想使用这个默认值作为与传递的键值对无关的后备。

我尝试创建某种子密钥。但我不知道如何使用它来初始化实际密钥。

在 MWE解决方法我想使用原始初始化值标题页. 实现此目的的最佳方法是什么?

\begin{filecontents}{\jobname.def}
    Test file content
\end{filecontents}

\documentclass{article}
\usepackage{pgfkeys}

\pgfkeys{
    test/.cd,
    titlepage/.store in = \@file@titlepage,
    titlepage/.default = \jobname.def,%<-- Set default value
    titlepage = \jobname.def, % <-- initial titlepage
}
\newcommand{\testtitlepage}{%
    \InputIfFileExists{\@file@titlepage}
    {Found titlepage: \@file@titlepage\par} % <-- only for testing}
    {Workaround: \pgfkeysvalueof{test/titlepage}}%<-- Try to use default value of titlepage
}
\begin{document}
    \pgfkeys{test/titlepage = test.def}% <-- Set non-existing file to activate workaround
    \testtitlepage
\end{document}

编辑: 我更新了我的 MWE 以使用.default。但是当传递的文件不存在时,我仍然无法在 \testtitlepage 内使用此默认键。

答案1

我猜你正在这里寻找这个:

\begin{filecontents}{\jobname.def}
    Test file content
\end{filecontents}

\documentclass{article}
\usepackage{pgfkeys}

\makeatletter
\pgfkeys{
    test/.cd,
    titlepage/.store in = \@file@titlepage,
    titlepage/.default = \jobname.def,%<-- Set default value
    titlepage = \jobname.def, % <-- initial titlepage
}

\newcommand{\testtitlepage}{%
    \InputIfFileExists{\@file@titlepage}
    {Found titlepage: \@file@titlepage\par} % <-- only for testing}
    {Workaround: \pgfkeysvalueof{/test/titlepage/.@def}}%<-- Try to use default value of titlepage
}
\begin{document}
    \testtitlepage

    \pgfkeys{/test/titlepage = notexisting.def}% <-- Set non-existing file to activate workaround
    \testtitlepage
\end{document}

在此处输入图片描述

相关内容