我想将两个词汇表“合并”为一个\printglossary
或等效的词汇表(参见 MWE)。
其他要求:
- 启用按名称等在词汇表中排序
有办法吗?
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[nomain,nonumberlist]{glossaries}
\newglossary[sog]{symbol}{soi}{soo}{Symbols}
\newglossary[fog]{operator}{foi}{foo}{Operators}
\makeglossaries
\newglossaryentry{typeAentry1}{%
type=symbol,
name={A1},
description={none}
}
\newglossaryentry{typeBentry1}{%
type=operator,
name={B1},
description={none}
}
\begin{document}
\glsaddall
% single separated glossaries
\printglossary[title=Symbols,type={symbol}]
\printglossary[title=Operators,type={operator}]
%what i would like to do
%\printglossary[title=Symbols and Operators,type={symbols LOGICAL OR operator}]
\end{document}
答案1
这不是合并,而是从一个词汇表移动到另一个词汇表\glsmoveentry{label}{target glossary}
。
由于有多个条目(很可能),可以使用
\forallglsentries[operator]{\localfoo}{\glsmoveentry{\localfoo}{symbol}}
命令,将所有条目从 移动operator
到symbol
。\localfoo
是一个“任意”命令序列,并扩展到条目的当前 gls 标签,例如\typeBentry1
在当前设置中。
在我看来,用例是不同词汇表的条目存储在每个词汇表的单独文件中,并使用 进行加载\loadglsentries
。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[nomain,nonumberlist]{glossaries}
\newglossary[sog]{symbol}{soi}{soo}{Symbols}
\newglossary[fog]{operator}{foi}{foo}{Operators}
\makeglossaries
\newglossaryentry{typeAentry1}{%
type=symbol,
name={A1},
description={Is a symbol}
}
\newglossaryentry{typeBentry1}{%
type=operator,
name={B1},
description={comes from Operator}
}
\begin{document}
\def\localfoo{}
\forallglsentries[operator]{\localfoo}{\glsmoveentry{\localfoo}{symbol}}
\gls{typeBentry1} and \gls{typeAentry1}
% single separated glossaries
\printglossary[title=Symbols,type={symbol}]
%\printglossary[title=Operators,type={operator}]
%what i would like to do
%\printglossary[title=Symbols and Operators,type={symbols LOGICAL OR operator}]
\end{document}
答案2
另一种方法是将makeindex
它们合并。例如,假设以下文档名为test.tex
:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[nomain,nonumberlist]{glossaries}
\newglossary[sog]{symbol}{soi}{soo}{Symbols}
\newglossary[fog]{operator}{foi}{foo}{Operators}
\makeglossaries
\newglossaryentry{typeAentry1}{%
type=symbol,
name={A1},
description={none}
}
\newglossaryentry{typeBentry1}{%
type=operator,
name={B1},
description={none}
}
\begin{document}
\glsaddall
\printglossary[title=Symbols and Operators,type=symbol]
\end{document}
然后,您可以使用以下命令将operator
词汇表合并到symbol
词汇表中:
pdflatex test
makeindex -s test.ist -t test.sog -o test.soi test.soo test.foo
pdflatex test
(或根据需要替换pdflatex
为latex
或)。这将产生:xelatex