好吧,我显然漏掉了一些东西,但我搞不清楚到底哪里出了问题。条目方面一切都很好\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:字段映射关键点在用户手册中)。在这种情况下name
,desc
和first
。您改用了datatool
键(Kaiser
,Name
等)。
\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}