我正在尝试显示see
交叉引用,但不显示文档中的页码。
我知道使用标准提供的方法是不可能的,所以我尝试使用
\renewcommand*{\glossaryentrynumbers}[1]{XXX}
(XXX
用我尝试过的各种方法替换)
适合我的代码。不幸的是,我缺乏 Latex 知识,这帮不上什么忙。
我必须放什么来代替才能XXX
显示交叉引用,但不显示页码?
以下是一个例子(抱歉,我以为我的意思已经很清楚了):
文件:glossary.tex
\newacronym[see={{cutg}}]{cut}{CUT}{Code Under Test}
\newglossaryentry{cutg}{name={CUT},
description={\acrfull{cut} refers to the part of the source code that is actually tested. It is a part of the entire source ode and modified before test generation. The tests are generated for the CUT, rather than the original source code. The CUT can be a function, a file or an entire component}
}
文件:report.tex
\documentclass[twoside]{article}
%Glossary
\usepackage[xindy,acronym]{glossaries} % nomain, if you define glossaries in a file, and you use \include{INP-00-glossary}
\setacronymstyle{long-short}
\makeglossaries
\usepackage[xindy]{imakeidx}
\makeindex[title=List of Terms]
\loadglsentries[main]{../../glossary}
\renewcommand{\acronymfont}[1]{\textit{#1}} % make acronms italics
\renewcommand{\firstacronymfont}[1]{\textit{#1}}
\renewcommand*{\seename}{Glossary:} % What text should be used for the see-field
%\renewcommand*{\glossaryentrynumbers}[1]{\glsseelist} % turn off ugly numbers (don't use the option for usepackage, otherwise see doesn't work)
\begin{document}
\glsaddall
\printglossaries
\end{document}
当我编译时,我生成了以下内容:
我怎样才能去掉页码(图片中用红色矩形突出显示)?我尝试更新创建命令\glossaryentrynumbers
,因为该选项[nonumberlist]
显然做了同样的事情(据我所知,它调用
\renewcommand*{\glossaryentrynumbers}[1]{}
所以我的想法是,如果我自己重新定义它以仅包含查看列表,那么我就应该被排序。
答案1
包seeautonumberlist
选项设计用于与nonumberlist
启用带有键的条目的位置列表的选项一起使用see
,但这仅适用于带有键的条目see
是文档中未使用的同义词的情况(否则您也会获得该条目的其余位置列表)。
例如:
\documentclass{report}
\usepackage[nonumberlist,seeautonumberlist]{glossaries}
\makeglossaries
\newglossaryentry{sample1}{name={sample},description={an example}}
\newglossaryentry{sample2}{name={another sample},
description={another example},
see={sample1}}
\begin{document}
\chapter{Sample}
A \gls{sample1}.
\printglossaries
\end{document}
得出的结果为:
sample2
如果我在文档中添加这样的引用:
\documentclass{report}
\usepackage[nonumberlist,seeautonumberlist]{glossaries}
\makeglossaries
\newglossaryentry{sample1}{name={sample},description={an example}}
\newglossaryentry{sample2}{name={another sample},
description={another example},
see={sample1}}
\begin{document}
\chapter{Sample}
A \gls{sample1} and \gls{sample2}.
\printglossaries
\end{document}
然后页码也会显示出来sample2
:
在这种情况下,将交叉引用移到描述中会更简单:
\documentclass{report}
\usepackage[nonumberlist]{glossaries}
\makeglossaries
\newglossaryentry{sample1}{name={sample},description={an example}}
\newglossaryentry{sample2}{name={another sample},
description={another example, \emph{see} \gls{sample1}}}
\begin{document}
\chapter{Sample}
A \gls{sample1} and \gls{sample2}.
\printglossaries
\end{document}
得出的结果为:
(glossaries
用户手册\gls
在描述字段中使用了类似的方式。)
另一种可能性是使用\glsseeformat
它可以接受逗号分隔的标签列表,并且是使用键时交叉引用在位置列表中显示的方式see
。如果使用此命令,请记住有两个强制参数。最后一个参数是为了方便而提供的makeindex
,尽管 LaTeX 会忽略它,但必须存在。
\documentclass{report}
\usepackage[nonumberlist]{glossaries}
\makeglossaries
\newglossaryentry{sample1}{name={sample},description={an example}}
\newglossaryentry{sample2}{name={another sample},
description={another example, \glsseeformat{sample1,sample3}{}}}
\newglossaryentry{sample3}{name={third sample},
description={yet another example}}
\begin{document}
\chapter{Sample}
A \gls{sample1} and \gls{sample2}.
\printglossaries
\end{document}
得出的结果为:
可选参数允许您覆盖“see”标签:
\glsseeformat[see also]{sample1,sample3}{}
对于缩写,您需要覆盖类似 样式的默认描述long-short
。例如:
\setacronymstyle{long-short}
\newacronym[description={an example, see \gls{sample1}}]{anex}{anex}{an example}
编辑:另一种可能性是使用glossaries-extra
扩展包存储了键的值see
(基础glossaries
包不这样做)。这意味着see
当数字列表被抑制时,可以在词汇表中访问键的值。版本 1.06glossaries-extra
添加了一个方便使用的命令\glsxtrusesee{
标签}
这使得访问值更加容易。如果键see
为空,则此命令不执行任何操作标签,否则\glsseeformat[
标签]{
xr 列表}{}
,其中标签和交叉引用列表是从字段中获取的see
。
可以修改后描述钩子来添加此功能。例如:
\documentclass{report}
\usepackage[nonumberlist,nopostdot=false]{glossaries-extra}
\makeglossaries
\newglossaryentry{sample1}{name={sample},description={an example}}
\newglossaryentry{sample2}{name={another sample},
description={another example},
see={sample1}}
\renewcommand*{\glsxtrpostdescgeneral}{%
\ifglshasfield{see}{\glscurrententrylabel}
{, \glsxtrusesee{\glscurrententrylabel}}%
{}%
}
\begin{document}
\chapter{Sample}
A \gls{sample1} and \gls{sample2}.
\printglossaries
\end{document}
得出的结果为:
该glossaries-extra
软件包还方便地让密钥触发在文档末尾的see
自动使用。这意味着以下内容只需要构建序列,,即可包含文档中的所有交叉引用:\glsxtraddallcrossrefs
latex
makeglossaries
latex
% arara: pdflatex
% arara: makeglossaries
% arara: pdflatex
\documentclass{article}
\usepackage[nonumberlist,nopostdot=false]{glossaries-extra}
\makeglossaries
\renewcommand*{\glsxtrpostdescgeneral}{%
\ifglshasfield{see}{\glscurrententrylabel}
{, \glsxtrusesee{\glscurrententrylabel}}%
{}%
}
\newglossaryentry{sample1}{name={sample 1},description={an example}}
\newglossaryentry{sample2}{name={sample 2},description={an
example},see={sample1}}
\newglossaryentry{sample3}{name={sample 3},description={an
example},see={sample2}}
\newglossaryentry{sample4}{name={sample 4},description={an
example},see=[see also]{sample2,sample3}}
\begin{document}
\gls{sample4}.
\printglossaries
\end{document}
得出的结果为: