将多种词汇表类型合并到一个词汇表中

将多种词汇表类型合并到一个词汇表中

我想将两个词汇表“合并”为一个\printglossary或等效的词汇表(参见 MWE)。

其他要求:

  1. 启用按名称等在词汇表中排序

有办法吗?

\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}}

命令,将所有条目从 移动operatorsymbol\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

(或根据需要替换pdflatexlatex或)。这将产生:xelatex

合并词汇表的图片

相关内容