词汇表:缩写列表(按字母顺序排列)和符号列表(按用法排列)

词汇表:缩写列表(按字母顺序排列)和符号列表(按用法排列)

对于我的论文,我想生成按字母顺序排列的缩写列表以及按论文中每个符号的首次出现顺序排列的符号列表。经过一番研究,我认为该 glossaries软件包是最适合此目的的软件包。

我可以生成按字母顺序排列的缩写列表,如下所示:

\documentclass[a4paper,twoside]{book}
\usepackage[acronym]{glossaries}

\newacronym{ny1}{NY}{New York}
\newacronym{la1}{LA}{Los Angeles}
\newacronym{un1}{UN}{United Nations}
\makeglossaries

\begin{document}
\printglossary[type=\acronymtype,title=Abbreviations]

\gls{ny1} \gls{la1} and \gls{un1} are abbreviations that should 
appear alphabetically in the list of abbreviations.

\end{document}

在此处输入图片描述

我还可以生成一个按符号在文档中首次出现顺序排列的符号列表,如下所示:

\documentclass[a4paper,twoside]{book}
\usepackage[symbols,nogroupskip,nonumberlist,sort=use]{glossaries-extra}

\glsxtrnewsymbol[description={position}]{x}{\ensuremath{x}}
\glsxtrnewsymbol[description={velocity}]{v}{\ensuremath{v}}
\glsxtrnewsymbol[description={acceleration}]{a}{\ensuremath{a}}
\glsxtrnewsymbol[description={time}]{t}{\ensuremath{t}}
\glsxtrnewsymbol[description={force}]{F}{\ensuremath{F}}
\makenoidxglossaries

\begin{document}
\printnoidxglossary[type=symbols,style=long,title={List of Symbols}]

Reference symbols: $\gls{F}$, $\gls{t}$, $\gls{x}$, $\gls{v}$, $\gls{a}$.

\end{document}

在此处输入图片描述

\usepackage[acronym]{glossaries}但是,将两个列表合并到一个文档对我来说并不简单,因为当我尝试加载两个包时,它们之间会发生冲突\usepackage[symbols,nogroupskip,nonumberlist,sort=use]{glossaries-extra}。将两个列表合并到一个文档的最佳方法是什么(缩写、按字母顺序排列和符号、按首次出现顺序排列)?

谢谢

答案1

glossaries-extra包在内部加载,glossaries因此您无需同时加载两者。 “noidx” 方法对于使用/定义顺序来说很快,但对于字母排序来说速度慢且效率低下,因此glossaries-extra提供了一种混合方法,您可以使用makeindex/xindy来表示需要按字母顺序排序的词汇表和\printnoidxglossary使用/定义顺序。 使用glossaries-extra,有一个可选参数 ,\makeglossaries它是一个逗号分隔的词汇表标签列表,指示哪些词汇表需要由makeindex/处理xindy。 这些显示为\printglossary,其他显示为\printnoidxglossary。 (请注意,没有\makenoidxglossary。)

\documentclass[a4paper,twoside]{book}
\usepackage[abbreviations,symbols,nogroupskip,nonumberlist]{glossaries-extra}

\makeglossaries[abbreviations]

\glsxtrnewsymbol[description={position}]{x}{\ensuremath{x}}
\glsxtrnewsymbol[description={velocity}]{v}{\ensuremath{v}}
\glsxtrnewsymbol[description={acceleration}]{a}{\ensuremath{a}}
\glsxtrnewsymbol[description={time}]{t}{\ensuremath{t}}
\glsxtrnewsymbol[description={force}]{F}{\ensuremath{F}}

\newabbreviation{ny1}{NY}{New York}
\newabbreviation{la1}{LA}{Los Angeles}
\newabbreviation{un1}{UN}{United Nations}

\begin{document}
\printnoidxglossary[type=symbols,sort=use,style=long,title={List of Symbols}]
\printglossary[type=abbreviations]

Reference symbols: $\gls{F}$, $\gls{t}$, $\gls{x}$, $\gls{v}$, $\gls{a}$.

\gls{ny1} \gls{la1} and \gls{un1} are abbreviations that should
appear alphabetically in the list of abbreviations.

\end{document}

构建过程仍然使用makeglossaries脚本,该脚本从文件中提取.aux需要处理的词汇表,因此在这种情况下它将跳过符号列表。

符号列表按使用顺序排列:

按使用顺序排列的符号列表

缩写列表按字母顺序排列:

按字母顺序排列的缩写列表

如果您更喜欢使用\newacronym而不是 ,则\newabbreviation需要用(或)替换abbreviations包选项并设置缩写样式:acronymsacronym

\documentclass[a4paper,twoside]{book}
\usepackage[acronym,symbols,nogroupskip,nonumberlist]{glossaries-extra}

\makeglossaries[\acronymtype]

\glsxtrnewsymbol[description={position}]{x}{\ensuremath{x}}
\glsxtrnewsymbol[description={velocity}]{v}{\ensuremath{v}}
\glsxtrnewsymbol[description={acceleration}]{a}{\ensuremath{a}}
\glsxtrnewsymbol[description={time}]{t}{\ensuremath{t}}
\glsxtrnewsymbol[description={force}]{F}{\ensuremath{F}}

\setabbreviationstyle[acronym]{long-short}

\newacronym{ny1}{NY}{New York}
\newacronym{la1}{LA}{Los Angeles}
\newacronym{un1}{UN}{United Nations}

\begin{document}
\printnoidxglossary[type=symbols,sort=use,style=long,title={List of Symbols}]
\printglossary[type=\acronymtype]

Reference symbols: $\gls{F}$, $\gls{t}$, $\gls{x}$, $\gls{v}$, $\gls{a}$.

\gls{ny1} \gls{la1} and \gls{un1} are abbreviations that should
appear alphabetically in the list of abbreviations.

\end{document}

.bib这是一种完全不同的方法,其中术语在文件中定义。

abbreviations.bib

% Encoding: UTF-8

@abbreviation{ny1,
  short = {NY},
  long = {New York}
}

@abbreviation{la1,
  short = {LA},
  long = {Los Angeles}
}

@abbreviation{un1,
  short = {UN},
  long = {United Nations}
}

\newabbreviation如果你已经有一个包含(或)的现有文件,\newacronym你可以将其转换为.bib带有 的文件convertgls2bib,该文件随附bib2gls

symbols.bib

% Encoding: UTF-8

@symbol{x,
  name = {\ensuremath{x}},
  description = {position}
}

@symbol{v,
  name = {\ensuremath{v}},
  description = {velocity}
}

@symbol{a,
  name = {\ensuremath{a}},
  description = {acceleration}
}

@symbol{t,
  name = {\ensuremath{t}},
  description = {time}
}

@symbol{F,
  name = {\ensuremath{F}},
  description = {force}
}

同样,如果您已经有一个包含的现有文件,\glsxtrnewsymbol您可以将其转换为.bib包含的文件convertgls2bib

文档 (test.tex):

\documentclass[a4paper,twoside]{book}
\usepackage[record,% using bib2gls
 abbreviations,symbols]{glossaries-extra}

\GlsXtrLoadResources[
  src={abbreviations},% data in abbreviations.bib
  sort={en}, % sort by this language tag (en = English)
  type=abbreviations, % put the entries in this glossary
  save-locations=false % no number list required
]

\GlsXtrLoadResources[
  src={symbols}, % data in symbols.bib
  sort={use}, % sort by order of use
  type=symbols, % put the entries in this glossary
  save-locations=false % no number list required
]


\begin{document}
\printunsrtglossary[type=symbols,style=long,title={List of Symbols}]
\printunsrtglossary[type=abbreviations]

Reference symbols: $\gls{F}$, $\gls{t}$, $\gls{x}$, $\gls{v}$, $\gls{a}$.

\gls{ny1} \gls{la1} and \gls{un1} are abbreviations that should
appear alphabetically in the list of abbreviations.

\end{document}

文档构建为:

pdflatex test
bib2gls test
pdflatex test

默认情况下bib2gls不形成字母组,因此现在不需要该nogroupskip选项。如果您决定确实需要字母组,则需要添加--group-g开关:

bib2gls -g test

符号列表与之前一样:

按使用顺序排列的符号列表

缩写列表再次按字母顺序排列:

按字母顺序排列的缩写列表

这提供了一种对不同词汇表应用不同顺序的更灵活方法。

如果您的 TeX 发行版太旧,无法支持混合方法或bib2gls方法,您可以像其他答案一样\makenoidxglossaries只使用基本包的方法,但如果您有包选项,您仍然可以使用,因为该命令自第一个版本以来就一直可用:glossariesglossaries-extra\glsxtrnewsymbolsymbolsglossaries-extra

\documentclass[a4paper,twoside]{book}
\usepackage[abbreviations,symbols,nogroupskip,nonumberlist]{glossaries-extra}

\makenoidxglossaries

\glsxtrnewsymbol[description={position}]{x}{\ensuremath{x}}
\glsxtrnewsymbol[description={velocity}]{v}{\ensuremath{v}}
\glsxtrnewsymbol[description={acceleration}]{a}{\ensuremath{a}}
\glsxtrnewsymbol[description={time}]{t}{\ensuremath{t}}
\glsxtrnewsymbol[description={force}]{F}{\ensuremath{F}}

\newabbreviation{ny1}{NY}{New York}
\newabbreviation{la1}{LA}{Los Angeles}
\newabbreviation{un1}{UN}{United Nations}

\begin{document}
\printnoidxglossary[type=symbols,sort=use,style=long,title={List of Symbols}]
\printnoidxglossary[type=abbreviations]

Reference symbols: $\gls{F}$, $\gls{t}$, $\gls{x}$, $\gls{v}$, $\gls{a}$.

\gls{ny1} \gls{la1} and \gls{un1} are abbreviations that should
appear alphabetically in the list of abbreviations.

\end{document}

优点是代码更加紧凑一些。

答案2

改编自这个答案来自@Grimler:我删除了filecontents并更改了符号的排序类型

\documentclass{article}
\usepackage[acronyms,toc,nonumberlist,nogroupskip]{glossaries}
\newglossary{symbols}{sym}{sbl}{List of Symbols}
%\usepackage{filecontents}
%\begin{filecontents}{gloss.tex}
    %================ACRONYMS=================%
    \newacronym{ny1}{NY}{New York}
    \newacronym{la1}{LA}{Los Angeles}
    \newacronym{un1}{UN}{United Nations}
    %================SYMBOLS=================%
    \newglossaryentry{x}{type=symbols,name=\ensuremath{x},sort=x,description={position}}
    \newglossaryentry{v}{type=symbols,name=\ensuremath{v},sort=v,description={velocity}}
    \newglossaryentry{a}{type=symbols,name=\ensuremath{a},sort=a,description={acceleration}}
    \newglossaryentry{t}{type=symbols,name=\ensuremath{t},sort=t,description={time}}
    \newglossaryentry{F}{type=symbols,name=\ensuremath{F},sort=F,description={force}}
%\end{filecontents}
\makenoidxglossaries
\glsnoexpandfields
%\loadglsentries{gloss.tex}
\begin{document}
    \gls{ny1} \gls{la1} and \gls{un1} are abbreviations that should 
    appear alphabetically in the list of abbreviations.

    Reference symbols: $\gls{F}$, $\gls{t}$, $\gls{x}$, $\gls{v}$, $\gls{a}$.

    \glsaddall
    \setlength{\glsdescwidth}{0.5\linewidth}
    \setlength{\glspagelistwidth}{0.1\linewidth}
    \printnoidxglossary[type=acronym,sort=letter,title=Abbreviations]
    \printnoidxglossary[type=symbols,sort=use]
\end{document}

相关内容