我正在研究这里提供的优秀答案: 从电子表格创建 gls
我想将词汇表包中的条目存储在 .csv 文件中,这比原始词汇表条目更容易编辑和可视化(恕我直言)。我的问题和上面的问题的区别在于,我尝试使用首字母缩略词,而不是完整的词汇表条目。
梅威瑟:
\usepackage{datatool}
\usepackage[xindy,% better indexing
acronym% to allow acronyms
]{glossaries} % make glossaries
\makeglossaries
\setacronymstyle{long-short}
\DTLloaddb{data}{GeneralAcro.csv} % load the database .csv file
\DTLforeach*{data}% data set
{% assignments
\label=Command,%
\abbrev=Short,%
\longv=Long
}{
\newacronym{\label}{\abbrev}{\longv}
}
\begin{document}
\Gls{ipcc} makes \glspl{gcm} using \glspl{fem}.
\printglossaries
\end{document}
当使用 pdflatex + makeindex + pdflatex 时,这会给我以下输出:
NULL(IPCC)利用 NULL(FEM)生成 NULLS(GCM)
1 缩略词 FEM NULL
作为参考,以下是 GeneralAcro.csv 文件内容:
Command,Short,Long
gcm,GCM,Global Climate Model
ipcc,IPCC,International Panel on Climate Change
fem,FEM,Finite Element Model
答案1
您的 MWE 给出错误:
! Package datatool Error: Can't assign \longv : there is no key `Long ' in data
base `data'.
问题是由于
\longv=Long
它正在寻找一个名为“Long”的键(注意空格),但它不存在,因此\longv
设置为 null,这就是产生“NULL”文本的原因。只需注释掉行尾字符造成的空格即可:
\DTLforeach*{data}% data set
{% assignments
\label=Command,%
\abbrev=Short,%
\longv=Long% <--- remove eol
}{
\newacronym{\label}{\abbrev}{\longv}
}
其他问题是由于定义条目时扩展不足造成的。您还需要使用包选项,sanitizesort=false
否则所有条目的排序键都将设置为\abbrev
,并且xindy
无法正确排序。name
和description
键也需要打开扩展:
\glssetexpandfield{name}
\glssetexpandfield{desc}