Inhalt drucken .unknown \pgfkeys

Inhalt drucken .unknown \pgfkeys

Ich habe viele Informationen, die ich in einen Stammbaum schreiben möchte. Einen Teil davon möchte ich in den Stammbaum schreiben und den Rest auf die nächste Seite, die durch Klicken auf den Personennamen zugänglich ist.

Der Baum wird mit dem Paket erstellt genealogytreeund die Daten werden in einer separaten Datei gespeicherttest_datenbank.tex.

Ich habe versucht, einen Befehl zum Drucken von Daten aus der Datenbank zu erstellen \newcommand, aber es wird nichts gedruckt. Kann mir jemand erklären, wie ich die Argumente richtig an den neuen Befehl übergebe?

Das endgültige Ziel besteht darin, die Daten für alle Personen auszudrucken, idealerweise ohne jeden Namen in den neu definierten Befehl zum Drucken der Daten einzugeben.

MWE

test.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}

test_datenbank.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}
    }
}

Antwort1

Ich glaube, es gibt ein kleines Missverständnis darüber, was die Schlüssel tun. Der /.is choiceHandler definiert eine Auswahl. Sie brauchen also

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

um den Stil "auszuführen". Dann wird die Nationalität gespeichert, \nationalityweil Sie dies beim Wählen angegeben haben

nationality/.store in=\nationality,

Vollständiges Beispiel.

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

Bildbeschreibung hier eingeben

verwandte Informationen