对于我的论文,我想生成按字母顺序排列的缩写列表以及按论文中每个符号的首次出现顺序排列的符号列表。经过一番研究,我认为该
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
包选项并设置缩写样式:acronyms
acronym
\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
只使用基本包的方法,但如果您有包选项,您仍然可以使用,因为该命令自第一个版本以来就一直可用:glossaries
glossaries-extra
\glsxtrnewsymbol
symbols
glossaries-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}