从 csv 生成 gls

从 csv 生成 gls

我正在研究这里提供的优秀答案: 从电子表格创建 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无法正确排序。namedescription键也需要打开扩展:

\glssetexpandfield{name}
\glssetexpandfield{desc}

相关内容