这个问题引出了一个新的应用:
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
\GlsXtrLoadResources
record
glossaries-extra
,但最新版本运行效果更好。
该应用程序集两项功能于一体:
.bib
根据在文件中找到的信息从文件中提取信息.aux
(如bibtex
);- 执行分层排序并整理位置(如
makeindex
或xindy
)。
这意味着您可以使用 JabRef 来管理条目。与makeindex
、xindy
和不同bibtex
,由 创建的文件bib2gls
不是格式化列表,而是按排序顺序提供的条目定义。只有从文件中选择的条目才会被定义,并且由于它们已按适当的顺序定义,因此可以使用提供的(或).bib
简单地显示词汇表。\printunsrtglossary
\printunsrtglossaries
glossaries-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
请记住,您需要在\gls
etc 参数中做出相关更改以反映这种替换。
bib2gls
有一个原始的 LaTeX 解释器,允许它sort
在省略时推断值。如果您使用@preamble
提供命令,bib2gls
将尝试将它们添加到解释器的已知命令列表中。如果提供的命令在多个文件中定义的条目中使用,您可以将@preamble
代码存储在单独的文件中。您可能不希望解释器获取某些命令定义,因此您可以将up 分成两个文件,比如和。.bib
.bib
@preamble
glossdefs-interpret.bib
glossdefs-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
需要切换,因为我使用的是包含字母组的词汇表样式。)结果如下所示:
检查test.glstex
(由 创建的文件bib2gls
)显示的sort
值example
是
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
]
现在文档如下所示:
检查.glstex
文件显示的sort
值example
已设置为:
sort={stuffexample}
这是因为bib2gls
now 无法识别\strong
,\swap
因此它将其解释\strong{\test{stuff}{example}}
为stuffexample
,这就是为什么example
now 最终位于 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}
现在的结果是:
您可以有多个\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}
那么结果是
但是,如果我.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}
那么结果就有点奇怪了:
但我可以利用这一点来改变正常的字母分组:
\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}
(为了说明目的,我对第二组进行了不同的排序。)这产生:
如果您有任何缩写,则需要在资源命令之前设置缩写样式。例如,假设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 ,但依赖项html
和ssi
会被自动选中。构建过程仍然是:
pdflatex test
bib2gls --group test
pdflatex test
makeglossaries
这与需要额外的makeglossaries
和来索引依赖项不同。但是直到后续的和调用pdflatex
才会获取相应的位置。结果如下所示:bib2gls
pdflatex
我可以通过将格式更改为来抑制词汇表中的索引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}
生成的文档如下所示:
鸭子的兄弟姐妹尚未被选中,因此鸭子条目看起来有点孤单。我们可以通过展平鸭子来整理列表,这需要调整name
,text
并将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
必填字段:description
和name
或parent
。如果name
省略 ,则从父名称中获取。如果sort
省略 ,则从 中获取name
。@symbol
必填字段:name
或parent
。如果name
省略description
,也是必填的,并且name
从父名称中获取。如果sort
省略,则从条目的标签。@number
作为@symbol
@index
没有必填字段。如果name
省略,则从条目的标签。如果sort
省略,则从中获得name
。@abbreviation
必填字段:long
和short
。如果sort
省略,则从字段中获取short
。@acronym
作为@abbreviation
@dualentry
必填字段:name
和description
。如果sort
省略,则从中获取name
。这还会创建一个带有标签的对应条目dual.
标签已name
翻转description
。@dualentryabbreviation
必填字段:short
、long
、description
。主要条目为缩写(按 排序short
),双重条目为常规术语(按 排序long
)。@dualsymbol
必填字段:name
和symbol
。这将创建一个带有标签的相应条目dual.
标签已name
翻转symbol
。@dualnumber
作为@dualsymbol
@dualabbreviation
必填字段:short
、long
和。这dualshort
将duallong
创建与标签对应的缩写dual.
标签具有short
和dualshort
翻转以及long
和duallong
翻转。@dualacronym
作为@dualabbreviation
基础包提供以下glossaries
字段:name
,,,,,,,,,,,,,,,,,,,,,,,,,,和和(如果))。description
parent
descriptionplural
text
first
plural
firstplural
symbol
symbolplural
sort
type
user1
user2
user3
user4
user5
user6
nonumberlist
see
short
shortplural
long
longplural
\makenoidxglossaries
loclist
对于.bib
文件,最好避免使用sort
、type
和nonumberlist
。选项的灵活性更高\GlsXtrLoadResources
。不要设置loclist
,因为它是具有自己自定义格式的私有字段。
扩展包提供了额外的字段:category
、、alias
和seealso
(如果record
使用该选项)group
。
此外,还可以识别bib2gls
以下字段:,,,,,dualshort
。它还提供供自己私有使用的字段(因此不要在文件中使用这些字段,但您可以在提供时在文档中访问它们):,,,。dualshortplural
duallong
duallongplural
dualplural
bib
location
dual
childcount
该glossaries-accsupp
包()\usepackage[accsupp]{glossaries-extra}
提供:access
,,,,,,,,,,,,,。textaccess
firstaccess
pluralaccess
firstpluralaccess
symbolaccess
symbolpluralaccess
descriptionaccess
descriptionpluralaccess
longaccess
shortaccess
longpluralaccess
shortpluralaccess
该glossaries-prefix
套餐提供:prefix
、prefixplural
和prefixfirst
。prefixfirstplural
如果您使用类似命令提供自己的字段\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