1

I'm using pgfkeys to define some key-value options. I need some default value to initialize a key and I also want to use this default value as a fallback indepentent from the passed key value pair.

What I've tried is to create somekind of a child key. But I don't know how to use this to initialize the actual key with it.

In the MWE at the workaround I would like to use the original initialized value for titlepage. What is the best way to achieve this?

\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}

Edit: I updated my MWE to use .default. But I'm still unable to use this default key inside \testtitlepage, when the passed file don't exist.

  • 3
    Isn't this what the pgfkeys modifiers .default or .initial are meant for? – user31729 Sep 18 '17 at 12:45
  • Thanks for the advice. I updated my question using the .default modifier. But I still don't know how to get this default value inside my macro testtitlepage, when the passed file don't exist. – faltfe Sep 18 '17 at 14:21
2

I guess you are looking for this here:

\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}

enter image description here

  • Thanks, this is working nicely. Do the subkey .@def hold the value of the .default modifier? I couldn't find something within the pgf manual. – faltfe Sep 19 '17 at 11:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.