是否有一个可以管理词汇表标签的程序?

是否有一个可以管理词汇表标签的程序?

这个问题引出了一个新的应用:
bib2gls

我经常使用“词汇表”包,它极好的在复杂的写作中,它可以帮你整理出很多东西。但是,随着我的“glossary.tex”文件越来越大,管理起来也越来越困难。我希望能找到一个类似于 JabRef 的程序来完成这项任务,但我找不到。

有人知道吗?如果有可以用于相同目的的程序就更好了。

答案1

由于目前还没有这样的工具,而且似乎很多用户都想拥有这样的工具,所以我决定将其作为一项功能集成到 JabRef 中。我们的想法是提供类似但更高级的功能,例如在 JabRef 中管理期刊缩写。

因此我创建了一个问题来跟踪开发过程。 https://github.com/JabRef/jabref/issues/2366

我大概会在圣诞节前后开始开发。

答案2

(答案在 v1.0 发布后重写bib2gls。)

有一个新的命令行应用程序叫做bib2gls可用于将文件转换为可使用命令.bib输入的格式。需要 package 选项。该应用程序至少需要 Java 7,但建议使用较新的版本(Java 7 已达到其使用寿命,现已弃用)。它还需要至少 v1.12 的glossaries-extra\GlsXtrLoadResourcesrecordglossaries-extra,但最新版本运行效果更好。

该应用程序集两项功能于一体:

  1. .bib根据在文件中找到的信息从文件中提取信息.aux(如bibtex);
  2. 执行分层排序并整理位置(如makeindexxindy)。

这意味着您可以使用 JabRef 来管理条目。与makeindexxindy和不同bibtex,由 创建的文件bib2gls不是格式化列表,而是按排序顺序提供的条目定义。只有从文件中选择的条目才会被定义,并且由于它们已按适当的顺序定义,因此可以使用提供的(或).bib简单地显示词汇表。\printunsrtglossary\printunsrtglossariesglossaries-extra

包选项record会自动打开undefaction=warn,这意味着如果您尝试引用(使用\gls等)未定义的条目,那么您只会收到警告而不是错误。在第一次运行 LaTeX 时,条目未定义(与 一样\cite)。这意味着像 这样的迭代命令\glsaddall不起作用。相反,您可以selection=all在 的选项中使用\GlsXtrLoadResources

如果您已有.tex包含所有条目定义的现有文件(使用\input或加载\loadglsentries),则可以使用补充应用程序convertgls2bib将其转换为.bib可供使用的文件bib2gls。例如,假设entries.tex包含:

\newglossaryentry{sample}{name={sample},description={an example}}

\newabbreviation{html}{HTML}{Hypertext Markup Language}

\newterm[plural=geese]{goose}

\newterm[see={[\seealsoname]goose}]{duck}

然后

convertgls2bib entries.tex entries.bib

将创建包含以下内容的文件entries.bib

% Encoding: UTF-8
@entry{sample,
  name = {sample},
  description = {an example}
}

@abbreviation{html,
  short = {HTML},
  long = {Hypertext Markup Language}
}

@index{goose,
  plural = {geese}
}

@index{duck,
  seealso = {goose}
}

.bib可以使用以下方式更改--bibenc可以使用<编码> 和.tex可以使用以下方式指定编码--texenc可以使用<编码>.例如:

convertgls2bib --texenc UTF-8 --bibenc UTF-8 entries.tex entries.bib

.bib格式不允许标签中有空格,因此您可以使用--space-sub<替代品> 用 < 替换空格替代品>.例如:

convertgls2bib --space-sub '-' entries.tex entries.bib

或者

convertgls2bib --space-sub '' entries.tex entries.bib

请记住,您需要在\glsetc 参数中做出相关更改以反映这种替换。

bib2gls有一个原始的 LaTeX 解释器,允许它sort在省略时推断值。如果您使用@preamble提供命令,bib2gls将尝试将它们添加到解释器的已知命令列表中。如果提供的命令在多个文件中定义的条目中使用,您可以将@preamble代码存储在单独的文件中。您可能不希望解释器获取某些命令定义,因此您可以将up 分成两个文件,比如和。.bib.bib@preambleglossdefs-interpret.bibglossdefs-nointerpret.bib

例如,假设我需要:

\providecommand{\strong}[1]{\textbf{\color{red}#1}}
\providecommand{\swap}[2]{#2 (#1)}

假设我从一个.bib名为的文件开始entries.bib

@preamble{"\providecommand{\strong}[1]{\textbf{\color{red}#1}}
\providecommand{\swap}[2]{#2 (#1)}"}

@index{example,
  name={\strong{\swap{stuff}{example}}}
}

@index{sample}
@index{test}
@index{foo}
@index{bar}

这是测试文档test.tex

\documentclass{article}

\usepackage{color}
\usepackage[record,style=indexgroup]{glossaries-extra}

\GlsXtrLoadResources[src={entries},selection=all]

% adjust indexgroup style:
\renewcommand{\glstreenamefmt}[1]{#1}
\renewcommand{\glstreegroupheaderfmt}[1]{\textbf{#1}}

\begin{document}
\printunsrtglossaries
\end{document}

构建过程如下:

pdflatex test
bib2gls --group test
pdflatex test

--group需要切换,因为我使用的是包含字母组的词汇表样式。)结果如下所示:

词汇表 B bar F foo R 例子(材料) S 样本 T 检验

检查test.glstex(由 创建的文件bib2gls)显示的sortexample

sort={redexample (stuff)}

这是因为从中bib2gls选取了和的定义\strong,因此它扩展了\swap@preamble

\strong{\test{stuff}{example}

\textbf{\color{red}example (stuff)}

然后忽略\textbf\color离开redexample (stuff),这就是为什么该example条目最终出现在 R 字母组中。

我可以用来interpret-preamble=false防止bib2gls尝试解释内容@preamble(它只会将内容写入.glstex文件):

\GlsXtrLoadResources[
  src={entries},% definitions are in entries.bib
  selection=all,% select all entries
  interpret-preamble=false% don't interpret @preamble

]

现在文档如下所示:

词汇表 B bar F foo S 样本 例子(材料) T 检验

检查.glstex文件显示的sortexample已设置为:

sort={stuffexample}

这是因为bib2glsnow 无法识别\strong\swap因此它将其解释\strong{\test{stuff}{example}}stuffexample,这就是为什么examplenow 最终位于 S 字母组中。需要的是 来bib2gls获取 的定义,\swap而不是,所以我需要创建包含的\strong文件:glossdefs-nointerpret.bib

@preamble{"\providecommand{\strong}[1]{\textbf{\color{red}#1}}"}

其中 glossdefs-interpret.bib包含:

@preamble{"\providecommand{\swap}[2]{#2 (#1)}"}

该文件现为:

\documentclass{article}

\usepackage{color}
\usepackage[record,style=indexgroup]{glossaries-extra}

\GlsXtrLoadResources[src={glossdefs-nointerpret},interpret-preamble=false]
\GlsXtrLoadResources[src={glossdefs-interpret,entries},selection=all]

% adjust indexgroup style:
\renewcommand{\glstreenamefmt}[1]{#1}
\renewcommand{\glstreegroupheaderfmt}[1]{\textbf{#1}}

\begin{document}
\printunsrtglossaries
\end{document}

现在的结果是:

词汇表 B bar E 例子(东西) F foo S 样本 T 检验

您可以有多个\GlsXtrLoadResources。在 中找到的任何定义都@preamble将被记住以供下一个资源集使用,因此上述内容也可以是:

\documentclass{article}

\usepackage{color}
\usepackage[record,style=indexgroup]{glossaries-extra}

\GlsXtrLoadResources[src={glossdefs-nointerpret},interpret-preamble=false]
\GlsXtrLoadResources[src={glossdefs-interpret}]
\GlsXtrLoadResources[src={entries},selection=all]

% adjust indexgroup style:
\renewcommand{\glstreenamefmt}[1]{#1}
\renewcommand{\glstreegroupheaderfmt}[1]{\textbf{#1}}

\begin{document}
\printunsrtglossaries
\end{document}

您可以.bib在 中列出多个文件src,在这种情况下,它们将一起排序。每组都\GlsXtrResources独立于其他组进行排序。假设testfile1.bib包含:

@index{duck}
@index{zebra}
@index{aardvark}

testfile2.bib包含:

@index{caterpillar}
@index{bee}
@index{wombat}

test.tex包含:

\documentclass{article}

\usepackage[record,style=indexgroup]{glossaries-extra}

\GlsXtrLoadResources[src={testfile1,testfile2},selection=all]

% adjust indexgroup style:
\renewcommand{\glstreenamefmt}[1]{#1}
\renewcommand{\glstreegroupheaderfmt}[1]{\textbf{#1}}

\begin{document}
\printunsrtglossaries
\end{document}

那么结果是

词汇表 A 土豚 B 蜜蜂 C 毛虫 D 鸭子 W 袋熊 Z 斑马

但是,如果我.bib使用两个单独的资源命令加载文件:

\documentclass{article}

\usepackage[record,style=indexgroup]{glossaries-extra}

\GlsXtrLoadResources[src={testfile1},selection=all]
\GlsXtrLoadResources[src={testfile2},selection=all]

% adjust indexgroup style:
\renewcommand{\glstreenamefmt}[1]{#1}
\renewcommand{\glstreegroupheaderfmt}[1]{\textbf{#1}}

\begin{document}
\printunsrtglossaries
\end{document}

那么结果就有点奇怪了:

词汇表 A 土豚 D 鸭子 Z 斑马 B 蜜蜂 C 毛虫 W 袋熊

但我可以利用这一点来改变正常的字母分组:

\documentclass{article}

\usepackage[record,style=indexgroup]{glossaries-extra}

\GlsXtrLoadResources[src={testfile1},
 group={Group 1},
 selection=all]
\GlsXtrLoadResources[src={testfile2},
 sort={letter-nocase-reverse},
 group={Group 2},
 selection=all]

% adjust indexgroup style:
\renewcommand{\glstreenamefmt}[1]{#1}
\renewcommand{\glstreegroupheaderfmt}[1]{\textbf{#1}}

\begin{document}
\printunsrtglossaries
\end{document}

(为了说明目的,我对第二组进行了不同的排序。)这产生:

词汇表 第 1 组 土豚 鸭 斑马 第 2 组 袋熊 毛虫 蜜蜂

如果您有任何缩写,则需要在资源命令之前设置缩写样式。例如,假设entries-abbrv.bib包含:

@string{ssi={server-side includes}}
@string{html={hypertext markup language}}

@abbreviation{shtml,
  short="shtml",
  long= ssi # " enabled " # html,
  description={a combination of \gls{html} and \gls{ssi}},
  seealso={html,ssi}
}

@abbreviation{html,
  short ="html",
  long  = html,
  description={a markup language for creating web pages}
}

@abbreviation{ssi,
  short="ssi",
  long = ssi,
  description={a simple interpreted server-side scripting language}
}

test.tex包含:

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[record,style=indexgroup]{glossaries-extra}

\setabbreviationstyle{long-short-sc-desc}
\GlsXtrLoadResources[src={entries-abbrv}]

\begin{document}
First use: \gls{shtml}. Next use: \gls{shtml}.

\printunsrtglossaries
\end{document}

注意,虽然shtml在文档中使用了 has ,但依赖项htmlssi会被自动选中。构建过程仍然是:

pdflatex test
bib2gls --group test
pdflatex test

makeglossaries这与需要额外的makeglossaries和来索引依赖项不同。但是直到后续的和调用pdflatex才会获取相应的位置。结果如下所示:bib2glspdflatex

文件图像

我可以通过将格式更改为来抑制词汇表中的索引glsignore,这bib2gls将识别为一个特殊的忽略位置:

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[record,style=indexgroup]{glossaries-extra}

\setabbreviationstyle{long-short-sc-desc}
\GlsXtrLoadResources[src={entries-abbrv}]

\begin{document}
First use: \gls{shtml}. Next use: \gls{shtml}.

\GlsXtrSetDefaultNumberFormat{glsignore}
\printunsrtglossaries
\end{document}

文件图像

如果我想使用样式long-short-sc,我可以bib2gls忽略文件description中提供的字段.bib

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[record,style=indexgroup]{glossaries-extra}

\setabbreviationstyle{long-short-sc}
\GlsXtrLoadResources[src={entries-abbrv},
   ignore-fields={description}]

\begin{document}
First use: \gls{shtml}. Next use: \gls{shtml}.

\printunsrtglossaries
\end{document}

得出的结果为:

文件图像

如果我改变主意并决定我实际上想要普通的大写缩写形式而不是使用,\textsc我可以告诉bib2gls更改字段的大小写short

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[record,style=indexgroup]{glossaries-extra}

\setabbreviationstyle{long-short}
\GlsXtrLoadResources[src={entries-abbrv},
   short-case-change={uc},
   ignore-fields={description}]

\begin{document}
First use: \gls{shtml}. Next use: \gls{shtml}.

\printunsrtglossaries
\end{document}

得出的结果为:

文件图像

现在假设我一直在使用\newdualentry手册中描述的示例命令glossaries。最接近的匹配条目类型是@dualentryabbreviation,所以我将改为entries-abbrv.bib使用它而不是@abbreviation

@string{ssi={server-side includes}}
@string{html={hypertext markup language}}

@dualentryabbreviation{shtml,
  short="shtml",
  long= ssi # " enabled " # html,
  description={a combination of \gls{html} and \gls{ssi}},
  seealso={html,ssi}
}

@dualentryabbreviation{html,
  short ="html",
  long  = html,
  description={a markup language for creating web pages}
}

@dualentryabbreviation{ssi,
  short="ssi",
  long = ssi,
  description={a simple interpreted server-side scripting language}
}

该文档需要abbreviations包选项,否则所有术语和缩写都将出现在main词汇表中:

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[record,abbreviations,style=indexgroup]{glossaries-extra}

\setabbreviationstyle{long-short-sc}
\GlsXtrLoadResources[src={entries-abbrv}]

\begin{document}
First use: \gls{shtml}. Next use: \gls{shtml}.

\printunsrtglossaries
\end{document}

得出的结果为:

文件图像

以下是分层索引的示例。该文件entries.bib包含:

@index{birds}
@index{duck,parent={birds}}
@index{goose,plural={geese},parent={birds}}
@index{swan,parent={birds}}
@index{chicken,parent={birds}}

@index{vegetable}
@index{cabbage,parent={vegetable}}

@index{minerals}
@index{quartz,parent={minerals}}
@index{corundum,parent={minerals}}
@index{amber,parent={minerals}}
@index{gypsum,parent={minerals}}

@index{aardvark}
@index{bard}
@index{buzz}

@index{item}
@index{subitem,parent={item}}
@index{subsubitem,parent={subitem}}

@index{parentid,name={parent name}}
@entry{child,parent={parentid},description={an example}}

该文件test.tex包含:

\documentclass{article}

\usepackage[record,stylemods={mcols},style=mcolindexgroup]{glossaries-extra}

\GlsXtrLoadResources[src={entries.bib}]

% adjust mcolindexgroup style:
\renewcommand{\glstreenamefmt}[1]{#1}
\renewcommand{\glstreegroupheaderfmt}[1]{\textbf{#1}}

\begin{document}
\gls{duck}.

\gls{quartz}, \gls{corundum}, \gls{amber}.

\gls{aardvark}, \gls{bard}, \gls{buzz}.

\gls{vegetable}, \gls{cabbage}.

\gls{subsubitem}.

\gls{child}.

\printunsrtglossaries
\end{document}

生成的文档如下所示:

文件图像

鸭子的兄弟姐妹尚未被选中,因此鸭子条目看起来有点孤单。我们可以通过展平鸭子来整理列表,这需要调整nametext并将parent其上移一个层次。然后父bird条目不再需要,可以将其删除。

\documentclass{article}

\usepackage[record,stylemods={mcols},style=mcolindexgroup]{glossaries-extra}

\GlsXtrLoadResources[src={entries.bib},
 flatten-lonely=postsort% flatten lonely children
]

% adjust mcolindexgroup style:
\renewcommand{\glstreenamefmt}[1]{#1}
\renewcommand{\glstreegroupheaderfmt}[1]{\textbf{#1}}

\begin{document}
\gls{duck}.

\gls{quartz}, \gls{corundum}, \gls{amber}.

\gls{aardvark}, \gls{bard}, \gls{buzz}.

\gls{vegetable}, \gls{cabbage}.

\gls{subsubitem}.

\gls{child}.

\printunsrtglossaries
\end{document}

现在产生:

文件图像

鸭子现在已扁平化,但卷心菜仍未扁平化。这是因为父条目(蔬菜)已在文档中编入索引,因此无法删除。可以通过更改扁平化孤独规则来扁平化卷心菜,但其父条目仍然无法删除:

\documentclass{article}

\usepackage[record,stylemods={mcols},style=mcolindexgroup]{glossaries-extra}

\GlsXtrLoadResources[src={entries.bib},
 flatten-lonely=postsort,% flatten lonely children
 flatten-lonely-rule=discard unrecorded
]

% adjust mcolindexgroup style:
\renewcommand{\glstreenamefmt}[1]{#1}
\renewcommand{\glstreegroupheaderfmt}[1]{\textbf{#1}}

\begin{document}
\gls{duck}.

\gls{quartz}, \gls{corundum}, \gls{amber}.

\gls{aardvark}, \gls{bard}, \gls{buzz}.

\gls{vegetable}, \gls{cabbage}.

\gls{subsubitem}.

\gls{child}.

\printunsrtglossaries
\end{document}

结果是:

文件图像

用户bib2gls手册包含所有条目类型的完整描述,但这里是摘要:

  • @entry必填字段:descriptionnameparent。如果name省略 ,则从父名称中获取。如果sort省略 ,则从 中获取name
  • @symbol必填字段:nameparent。如果name省略description,也是必填的,并且name从父名称中获取。如果sort省略,则从条目的标签
  • @number作为@symbol
  • @index没有必填字段。如果name省略,则从条目的标签。如果sort省略,则从中获得name
  • @abbreviation必填字段:longshort。如果sort省略,则从字段中获取short
  • @acronym作为@abbreviation
  • @dualentry必填字段:namedescription。如果sort省略,则从中获取name。这还会创建一个带有标签的对应条目dual.标签name翻转description
  • @dualentryabbreviation必填字段:shortlongdescription。主要条目为缩写(按 排序short),双重条目为常规术语(按 排序long)。
  • @dualsymbol必填字段:namesymbol。这将创建一个带有标签的相应条目dual.标签name翻转symbol
  • @dualnumber作为@dualsymbol
  • @dualabbreviation必填字段:shortlong和。这dualshortduallong创建与标签对应的缩写dual.标签具有shortdualshort翻转以及longduallong翻转。
  • @dualacronym作为@dualabbreviation

基础包提供以下glossaries字段:name,,,,,,,,,,,,,,,,,,,,,,,,,,和和(如果))。​​​​​​​​​​​​​​descriptionparentdescriptionpluraltextfirstpluralfirstpluralsymbolsymbolpluralsorttypeuser1user2user3user4user5user6nonumberlistseeshortshortplurallonglongplural\makenoidxglossariesloclist

对于.bib文件,最好避免使用sorttypenonumberlist。选项的灵活性更高\GlsXtrLoadResources。不要设置loclist,因为它是具有自己自定义格式的私有字段。

扩展包提供了额外的字段:category、、aliasseealso(如果record使用该选项)group

此外,还可以识别bib2gls以下字段:,,,,,dualshort。它还提供供自己私有使用的字段(因此不要在文件中使用这些字段,但您可以在提供时在文档中访问它们):,,,。dualshortpluralduallongduallongpluraldualpluralbiblocationdualchildcount

glossaries-accsupp包()\usepackage[accsupp]{glossaries-extra}提供:access,,,,,,,,,,,,,。textaccessfirstaccess​​​​​​​pluralaccessfirstpluralaccesssymbolaccesssymbolpluralaccessdescriptionaccessdescriptionpluralaccesslongaccessshortaccesslongpluralaccessshortpluralaccess

glossaries-prefix套餐提供:prefixprefixpluralprefixfirstprefixfirstplural

如果您使用类似命令提供自己的字段\glsaddkey,请将定义放在第一个实例之前\GlsXtrLoadResources

答案3

我发布这个答案是因为所有这些信息很难在评论中容纳。

总结一下这些评论:似乎不存在这样的软件。要么开发它,要么可以调整现有的 bibtex 管理软件(如 Jabref),以处理包含词汇表定义的 *.tex 文件。Jabref 开发团队的 @Christoph S 表示他愿意听取更多信息,因此这里是简要说明:

词汇表文件与 bib 文件有些相似,其中词汇表 *.tex 文件包含词汇表条目,而不是书目条目。词汇表的定义(可以替换 bibtex 中的条目类型,即 @misc)如下:

\newglossaryentry
\longnewglossaryentry
\newacronym
\newterm
\newabbrevation
\glsxtrnewsymbol
\glsxtrnewnumber

词汇表条目可以具有的字段包括

name
description
parent
descriptionplural
text
first
plural
firstplural
symbol
symbolplural
sort
type
user1,...,user6
nonumberlist
see

词汇表管理 GUI 必须能够读取这些字段、管理条目并生成新的条目。

这是由词汇表包提供的几个示例文件编译而成的词汇表示例文件

% This is a sample file, it was produced from the glossaries package sample files.


% The following definition of glossaries are typical and are used by most users, 
% they are covered by the beginners guide, and are simple

\newglossaryentry{Perl}{name=\texttt{Perl},
    sort=Perl, % need a sort key because name contains a command
    description=A scripting language}

\newglossaryentry{glossary}{name=glossary,
    description={\nopostdesc},
    plural={glossaries}}

\newglossaryentry{glossarycol}{
    description={collection of glosses},
    sort={2},
    parent={glossary}}

\newglossaryentry{glossarylist}{
    description={list of technical words},
    sort={1},
    parent={glossary}}

\newglossaryentry{pagelist}{name=page list,
    % description value has to be enclosed in braces
    % because it contains commas
    description={a list of individual pages or page ranges
        (e.g.\ 1,2,4,7-9)}}

\newglossaryentry{mtrx}{name=matrix,
    description={rectangular array of quantities},
    % plural is not simply obtained by appending an s, so specify
    plural=matrices}

% entry with a paragraph break in the description

\newglossaryentry{par}{name=paragraph,
    description={distinct section of piece of
        writing.\glspar Beginning on new, usually indented, line}}

% entry with two types of plural. Set the plural form to the
% form most likely to be used. If you want to use a different
% plural, you will need to explicity specify it in \glslink
\newglossaryentry{cow}{name=cow,
    % this isn't necessary, as this form (appending an s) is
    % the default
    plural=cows,
    % description:
    description={(\emph{pl.}\ cows, \emph{archaic} kine) an adult
        female of any bovine animal}}

\newglossaryentry{bravo}{name={bravo},
    description={\nopostdesc}}

\newglossaryentry{bravo1}{description={cry of approval (pl.\ bravos)},
    sort={1},
    plural={bravos},
    parent=bravo}

\newglossaryentry{bravo2}{description={hired ruffian or killer (pl.\ bravoes)},
    sort={2},
    plural={bravoes},
    parent=bravo}

\newglossaryentry{seal}{%
    name=seal,%
    description={sea mammal with flippers that eats fish}
}

\newglossaryentry{sealion}{%
    name={sea lion},%
    description={large seal}%
}

\newglossaryentry{M}{name={$M$},
    sort=M,
    description={mass},
    symbol=kg}

\newglossaryentry{svm}{
    % how the entry name should appear in the glossary
    name={Support vector machine (SVM)},
    % how the description should appear in the glossary
    description={Statistical pattern recognition
        technique~\cite{svm}},
    % how the entry should appear in the document text
    text={svm},
    % how the entry should appear the first time it is
    % used in the document text
    first={support vector machine (svm)}}

\newglossaryentry{ksvm}{
    name={Kernel support vector machine (KSVM)},
    description={Statistical pattern recognition technique
        using the ``kernel trick'' (see also SVM)},
    text={ksvm},
    first={kernel support vector machine}}

\newglossaryentry{ident}{name=identity matrix,
    description=diagonal matrix with 1s along the leading diagonal,
    plural=identity matrices}


% These are special characters or protected characters. glossaries knows how to handle these.
\newglossaryentry{quote}{name={"},
    description={the double quote symbol}}

\newglossaryentry{at}{name={@},
    description={the ``at'' symbol}}

\newglossaryentry{excl}{name={!},
    description={the exclamation mark symbol}}

\newglossaryentry{bar}{name={\ensuremath{|}},
    description={the vertical bar symbol}}

\newglossaryentry{hash}{name={\#},
    description={the hash symbol}}

\newglossaryentry{emigre}{%
    name={{é}migré},
    description={person who has emigrated to another country,
        especially for political reasons}
}

\newglossaryentry{not:set}{type=notation, % glossary type
    name={$\mathcal{S}$},
    description={A set},
    sort={S}}

%If one wants to use \gls call in a formula, he'd used the \ensuremath command
\newglossaryentry{Gamma}{name=\ensuremath{\Gamma(z)},
    description=Gamma function,
    sort=Gamma}

\newglossaryentry{Phi}{name={\ensuremath{\Phi(\alpha,\gamma;z)}},
    description=confluent hypergeometric function,sort=Pagz}

\newglossaryentry{knu}{name=\ensuremath{k_\nu(x)},
    description=Bateman's function,sort=kv}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% typical acronym definitions

%the typical definition of an acronym is this, that is not quite similar to the name={field}... This could pose a challange for tweaking a program such as jabref...

\newacronym{svm1}% label
{svm1}% abbreviation
{support vector machine one}% long form

\newacronym{laser}{laser}{light amplification by stimulated
    emission of radiation}





%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% These are samples I found in the samples provided by the glossaries package.
%%% They are more complex and are covered in the long detailed users guide
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\longnewglossaryentry{par1}{name={par1}}%
{%
    A long description with a paragraph break.

    This is the next paragraph.


% non-standard definition of an acronym - never used anything like that either
% This contrived acronym has non-standard plural forms.
% These are specified in the optional argument.
% Remove the optional argument to revert to the default
% plurals.
\newacronym[\glsshortpluralkey=cas,\glslongpluralkey=contrived
acronyms]{aca}{aca}{a contrived acronym}

\newacronym[description={a device that emits a narrow beam of
    light}]{laser}{laser}{light amplification by stimulated
    emission of radiation}

\newacronym[shortaccess=S V M]{svm}{svm}{support vector machine}

\newacronym[type=main]{vc}{VC}{Vector Calculus}

\newglossaryentry{pear}{name=pear,
    description={an oddly shaped fruit}}

\newglossaryentry{apple}{name=apple,
    description={firm, round fruit},
    see=[see also]{pear}}

\newglossaryentry{banana}{name=banana,
    description={a yellow fruit with an even odder shape than
        a \gls{pear}}}

\newglossaryentry{fruit}{name=fruit,
    description={sweet, fleshy product of plant containing seed}}

\glssee{fruit}{pear,apple,banana}

\newabbr{eg}{e.g.}{exempli gratia}
\newabbr{ie}{i.e.}{id est}
\newabbr{bsc}{B.Sc.}{Bachelor of Science}

\newdualentry{svm}% label
{SVM}% abbreviation
{support vector machine}% long form
{Statistical pattern recognition technique}% description

\newglossaryentry{sample}{name={sample},
    description={an example},
    prefix={a~},
    prefixplural={the\space}%
}

\newglossaryentry{oeil}{name={oeil},
    plural={yeux},
    description={eye},
    prefix={l'},
    prefixplural={les\space}}


%these are samples with custome fields (or keys), that is ed and ing are defined in the preamble of tex file and then these are defined. I would not expect a managing program to have a preamble for custom definitions, however, being able to produce custom 
\newglossaryentry{run}{name={run},%
    ed={ran},%
    ing={running},
    description={}}

\newglossaryentry{waddle}{name={waddle},%
    ed={waddled},%
    ing={waddling},%
    description={}}

我看到的最大挑战是新缩略词的定义:它不遵循 bibtex 中条目定义的典型结构。

至于@Nicola Talbot 对自定义字段的担忧,Jabref 有一个编辑条目 bib 源的选项,可以在那里添加自定义 bib 字段,在词汇表中也可以这样做。

答案4

我遇到的一个主要问题bib2gls是,Zotero(我选择的参考管理)不允许它使用的字段和 bib 类型。

因此我创建了一个小的 Python 包bib2glossary,在 bib 和 tex 之间进行转换,并使用用户定义的字段到参数名称的映射。

>> pip install bib2glossary
>> glossary2bib path/to/file.tex --entry-type misc --param2field path/to/file.json
>> bib2glossary path/to/file.bib --entry-type misc --param2field path/to/file.json

它用特克斯汤Bibtex 解析器bibtex分别解析latex

相关内容