我用它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}