Imprimir contenido .unknown \pgfkeys

Imprimir contenido .unknown \pgfkeys

Tengo mucha información para escribir en un árbol genealógico. Me gustaría escribir una parte en el árbol y el resto en la página siguiente, accesible al hacer clic en el nombre de la persona.

El árbol se crea con el paquete genealogytreey los datos se almacenan en un archivo separado.prueba_base de datos.tex.

Intenté crear un archivo \newcommandpara imprimir datos de la base de datos pero no se imprime nada. ¿Alguien puede explicarme cómo pasar los argumentos correctamente al nuevo comando?

El objetivo final es imprimir los datos de todas las personas, idealmente sin escribir cada nombre en el comando recién definido para imprimir sus datos.

MWE

prueba.tex

\documentclass{article}

\usepackage[all]{genealogytree}

\begin{document}
    
    % Define new keys in genealogytree database
    \pgfkeys{/gtr/database/.cd,
        nationality/.store in=\nationality,
        nationality=unknown,
        given name/.store in=\givenname,
        family name/.store in=\familyname,
        language/.store in=\language
    }
    
    % Define new format for genealogytree
    \gtrDeclareDatabaseFormat{xTestFormat}
    {
        % Define box title based on nationality
        \ifdefined\nationality
        \gtrset{box={title=\nationality}}
        \fi
        % Define tcolorbox parameters based on 'nationality' key
        \tcbset{unknown/.style={colback=black!5!white,colframe=black}}
        \tcbset{french/.style={colback=blue!5!white,colframe=blue}}
        \tcbset{british/.style={colback=red!5!white,colframe=red}}  
    }
    { % Define informations to print in the box
        \gtrPrintSex~\textcolor{blue}{\textbf{\givenname}}
        
        \ifdefined\familyname
        \familyname
        \fi
        
        \language
        
        \gtrifcommentdefined{\gtrPrintComment}{}
    }
    
    \input{test_database}
    
    % Create a command to print people complete data
    \newcommand\PrintCompletePeople[1]{
            
        This is the direct output: #1
        
        I want to know what is behind the key:
        
        \pgfkeys{/mydata/.cd,
            nationalitybis/.store in=\nationalitybis,
            nationalitybis=\pgfkeysvalueof{/gtr/database/people/#1/nationality}
        }
    
        \nationalitybis
        
        but nothing is printed
    }
    
    
    \begin{tikzpicture}
        
        \genealogytree[
            timeflow=down,
            processing=database,
            database format=xTestFormat,
            box={\nationality}
        ]
        {child[id=fam_Water]{
            p[id=Justine]{people=JustineID}
            g[id=Tom]{people=TomID}
            c[id=Jane]{people=JaneID}
            }
        }
        
    \end{tikzpicture}

    \newpage
    
    \PrintCompletePeople{JaneID}
    
    
    
\end{document}

prueba_base de datos.tex

% Create database

% Jane Water
\pgfkeys{/gtr/database/.cd,
    people/.is choice,
    people/JaneID/.style={
        female,
        nationality = british,
        given name  = Jane,
        family name = Water,
        language    = {English},
        comment     = {Something else}
    }
}

% Justine Random
\pgfkeys{/gtr/database/.cd,
    people/.is choice,
    people/JustineID/.style={
        female,
        nationality = french,
        given name  = Justine,
        language    = {French, English},
%       family name = Random,
        comment     = {Something interesting}
    }
}

% Tom Water
\pgfkeys{/gtr/database/.cd,
    people/.is choice,
    people/TomID/.style={
        male,
        nationality = british,
        given name  = Tom,
        family name = Water,
        language    = {English},
%       comment     = {There is nothing to say}
    }
}

Respuesta1

Creo que hay un ligero malentendido sobre lo que hacen las claves. El /.is choicemanejador define una elección. Así que tú necesitas

\pgfkeys{/gtr/database/.cd,people=#1}%

para "ejecutar" el estilo. Entonces la nacionalidad se guarda en \nationalityporque así lo dijiste al marcar

nationality/.store in=\nationality,

Ejemplo completo.

\documentclass{article}
\begin{filecontents}[overwrite]{test_database.tex}
% Create database

% Jane Water
\pgfkeys{/gtr/database/.cd,
    people/.is choice,
    people/JaneID/.style={
        female,
        nationality = british,
        given name  = Jane,
        family name = Water,
        language    = {English},
        comment     = {Something else}
    }
}

% Justine Random
\pgfkeys{/gtr/database/.cd,
    people/.is choice,
    people/JustineID/.style={
        female,
        nationality = french,
        given name  = Justine,
        language    = {French, English},
%       family name = Random,
        comment     = {Something interesting}
    }
}

% Tom Water
\pgfkeys{/gtr/database/.cd,
    people/.is choice,
    people/TomID/.style={
        male,
        nationality = british,
        given name  = Tom,
        family name = Water,
        language    = {English},
%       comment     = {There is nothing to say}
    }
}

\end{filecontents}

\usepackage[all]{genealogytree}

\begin{document}
    
    % Define new keys in genealogytree database
    \pgfkeys{/gtr/database/.cd,
        nationality/.store in=\nationality,
        nationality=unknown,
        given name/.store in=\givenname,
        family name/.store in=\familyname,
        language/.store in=\language
    }
    
    % Define new format for genealogytree
    \gtrDeclareDatabaseFormat{xTestFormat}
    {
        % Define box title based on nationality
        \ifdefined\nationality
        \gtrset{box={title=\nationality}}
        \fi
        % Define tcolorbox parameters based on 'nationality' key
        \tcbset{unknown/.style={colback=black!5!white,colframe=black}}
        \tcbset{french/.style={colback=blue!5!white,colframe=blue}}
        \tcbset{british/.style={colback=red!5!white,colframe=red}}  
    }
    { % Define informations to print in the box
        \gtrPrintSex~\textcolor{blue}{\textbf{\givenname}}
        
        \ifdefined\familyname
        \familyname
        \fi
        
        \language
        
        \gtrifcommentdefined{\gtrPrintComment}{}
    }
    
    \input{test_database}
    
    % Create a command to print people complete data
    \newcommand\PrintCompletePeople[1]{
            
        This is the direct output: #1
        
        I want to know what is behind the key:      
        \pgfkeys{/gtr/database/.cd,people=#1}%
        \nationality
    }
    
    
    \begin{tikzpicture}
        
        \genealogytree[
            timeflow=down,
            processing=database,
            database format=xTestFormat,
            box={\nationality}
        ]
        {child[id=fam_Water]{
            p[id=Justine]{people=JustineID}
            g[id=Tom]{people=TomID}
            c[id=Jane]{people=JaneID}
            }
        }
        
    \end{tikzpicture}

    \newpage
    
    \PrintCompletePeople{JaneID}
    
    
    
\end{document}

ingrese la descripción de la imagen aquí

información relacionada