1

Ok, I am clearly missing something but I cannot figure out what is wrong. All is fine concerning the \gls{}-entries, but in \printglossary I only get the last entry of the .csv-list.

\documentclass{scrartcl}
\usepackage{glossaries}
\usepackage{datatool}    
\usepackage{filecontents}

\begin{filecontents}{emperor.csv}
  Kaiser, Name, Geburt, Tod, Regierungszeit
  Augustus,Imperator Caesar Divi Filius Augustus,*23.September 63 v.Chr. in Rom,† 19. August 14 n.Chr. in Nola,vom 16. Jan. 27 v.Chr. bis 19. August 14 n.Chr.
  Tiberius,Tiberius Claudius Nero,*16. November 42 v.Chr. in Rom,† 16. März 37 n. Chr. in Misenum,vom 19. August 14 v.Chr. bis 16. März 37 n.Chr.
  Caligula,Gaius Caesar Augustus Germanicus,*31. August 12 in Antium,† 24. Jan. 41 in Rom (ermordet),vom 18. März 37 bis 24. Jan. 41
  Claudius,Tiberius Claudius Nero Germanicus,* 1. August 10 v.Chr. in Lugdunum,† 13. Oktober 54 n.Chr. in Rom,vom 24. Jan. 41 bis 13. Oktober 54
  Nero,Nero Claudius Caesar Drusus Germanicus,* 15. Dezember 37 in Antium,† 9. Juni 68 in Rom (Selbstmord),vom 13. Oktober 54 bis 9. Juni 68
\end{filecontents}    
\makeglossaries

\DTLloaddb{romanemperors}{emperor.csv}
 \glssetexpandfield{Kaiser}
\glssetexpandfield{Name}
\glssetexpandfield{Geburt}
\glssetexpandfield{Tod}
\glssetexpandfield{Regierungszeit}

\DTLforeach*{romanemperors}% data set
 {\Kaiser=Kaiser,%
  \Name=Name,%
  \Geburt=Geburt,%
  \Tod=Tod,%
  \Regierungszeit=Regierungszeit% 
 }{%
\newglossaryentry{\Kaiser}{%
   name={\textbf{\Kaiser}}, 
   description={\Kaiser\ 
     \ifdefempty{\Name}{}{(\Name)} 
       -- \Regierungszeit;\newline
      \Geburt\newline
      \Tod}, 
   first={\Kaiser\ (\Name; Kaiser \Regierungszeit)},%
  }}
\newcommand*{\glstype}{\glssymbol}

\begin{document}
  Hallo Kaiser \gls{Caligula}\par
  \gls{Caligula}

\printglossary[
  title = {Namen und Daten der römischen Kaiser},
] 

\end{document}

enter image description here

1

The argument of \glssetexpandfield must be the internal field label used by the glossaries package (see Table 4.1: Key to Field Mappings in the user manual). In this case name, desc and first. You've used the datatool keys instead (Kaiser, Name etc).

\documentclass{scrartcl}
\usepackage{glossaries}
\usepackage{datatool}    
\usepackage{filecontents}

\begin{filecontents}{emperor.csv}
  Kaiser, Name, Geburt, Tod, Regierungszeit
  Augustus,Imperator Caesar Divi Filius Augustus,*23.September 63 v.Chr. in Rom,† 19. August 14 n.Chr. in Nola,vom 16. Jan. 27 v.Chr. bis 19. August 14 n.Chr.
  Tiberius,Tiberius Claudius Nero,*16. November 42 v.Chr. in Rom,† 16. März 37 n. Chr. in Misenum,vom 19. August 14 v.Chr. bis 16. März 37 n.Chr.
  Caligula,Gaius Caesar Augustus Germanicus,*31. August 12 in Antium,† 24. Jan. 41 in Rom (ermordet),vom 18. März 37 bis 24. Jan. 41
  Claudius,Tiberius Claudius Nero Germanicus,* 1. August 10 v.Chr. in Lugdunum,† 13. Oktober 54 n.Chr. in Rom,vom 24. Jan. 41 bis 13. Oktober 54
  Nero,Nero Claudius Caesar Drusus Germanicus,* 15. Dezember 37 in Antium,† 9. Juni 68 in Rom (Selbstmord),vom 13. Oktober 54 bis 9. Juni 68
\end{filecontents}    
\makeglossaries

\DTLloaddb{romanemperors}{emperor.csv}
\glssetexpandfield{name}
\glssetexpandfield{desc}
\glssetexpandfield{first}

\DTLforeach*{romanemperors}% data set
 {\Kaiser=Kaiser,%
  \Name=Name,%
  \Geburt=Geburt,%
  \Tod=Tod,%
  \Regierungszeit=Regierungszeit% 
 }{%
\newglossaryentry{\Kaiser}{%
   name={\textbf{\Kaiser}}, 
   description={\Kaiser\ 
     \ifdefempty{\Name}{}{(\Name)} 
       -- \Regierungszeit;\newline
      \Geburt\newline
      \Tod}, 
   first={\Kaiser\ (\Name; Kaiser \Regierungszeit)},%
  }}
\newcommand*{\glstype}{\glssymbol}

\begin{document}
  Hallo Kaiser \gls{Caligula}\par
  \gls{Caligula}

\printglossary[
  title = {Namen und Daten der römischen Kaiser},
] 

\end{document}

image of document

0

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.