使用 datatool 处理时,词汇表始终提供 csv 列表的最后一项

使用 datatool 处理时,词汇表始终提供 csv 列表的最后一项

好吧,我显然漏掉了一些东西,但我搞不清楚到底哪里出了问题。条目方面一切都很好\gls{},但\printglossary我只得到了列表的最后一项.csv

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

在此处输入图片描述

答案1

的参数\glssetexpandfield必须是glossaries(参见表 4.1:字段映射关键点在用户手册中)。在这种情况下namedescfirst。您改用了datatool键(KaiserName等)。

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

文件图像

相关内容