使用词汇表但不显示某些参考资料的“页码”

使用词汇表但不显示某些参考资料的“页码”

我希望能够控制\gls词汇表中哪些条目与页码一起显示。我读过手册,发现格式glsignore部分实现了这一点,但似乎只会使数字难以辨认,而不是完全删除它。1, ,例如,请注意条目的pizza,我只希望1那里有(因为那是正文中唯一的引用)。

有没有办法解决这个问题而不诉诸bib2gls? 将我的非常大、交叉引用和充满宏的数据转换为bib-格式是一项重大的冒险,我想避免这种情况。

我对awk/ sed/grep等非常熟练,因此重新格式化主体中的所有调用\gls{*entry*}不是问题(我想我.bib也可以将我的词汇表转换为,但我真的不想这样做)。

在此示例中,我使用\mygls-macro 应用于glsignore词汇表本身内的条目。我也想将其应用于词汇表之外的一些条目,但词汇表内部的条目才是最重要的。

示例图像

我完全清楚我需要makeglossaries至少运行两次,因为并非所有标准都在正文中直接引用。

梅威瑟:

\documentclass{article}

\usepackage[xindy,acronym]{glossaries-extra}
\makeglossaries

\newcommand{\mygls}[1]{\gls[format=glsignore]{#1}}

\newglossaryentry{tech}
{%
  name={technology},
  description={Not to be confused with \mygls{pizza}.}
}

\newglossaryentry{pizza}
{%
  name={pizza},
  description={Food usually consumed with \mygls{beer}.}
}

\newglossaryentry{beer}
{%
  name={beer},
    description={Drink normally consumed with \mygls{pizza}.}
}


\newglossaryentry{sim}
{%
  name={simulated},
    description={A simulated newpage \newpage which also references \mygls{pizza}.}
}

\begin{document}

A glossary example. International \gls{tech} and \gls{pizza} use has
reached peak oil levels. As has \gls{sim} shenanigans.

\newpage

\printglossaries

\end{document}

进一步描述我的情况,我的一个词汇表(在我的 very-large-thesis*tm 中)包含大约一百个标准和许多交叉引用,我想摆脱这些交叉引用的页码,因为它们完全混淆了词汇表(即页码比条目本身的描述占用更多的空间)但仍然保留在文中引用标准时的页码,并保留供读者阅读 pdf 而不是印刷版本的链接。

有什么想法吗?

答案1

我想到“最简单”/“最干净”的解决方案是引入一个条件并重新定义\delimN\glsXpageXglsignore\glsXpageXglsnumberformat使用\let\renewcommand以便第一个重新定义仅调用\toggletrue,后两个始终在执行其原始定义后调用,最后一个另外调用第一个使用\togglefalse的原始定义。\delimN\iftoggle

编辑:据我所知,你只能通过查看来找到需要重新定义的三个命令的定义词汇表[-extra]源。由于我们只是稍微修改了原始行为——幸运的是,在这种情况下“自由修改”它们不会产生副作用——因此只需“包装”或“扩展”原始定义就足够了甚至不看一眼(唯一的技巧是将重新定义放在它们应该在的位置,也就是词汇表序言的末尾。请注意,我们可以\renewcommand在这里使用带星号的版本,但这个细节可以放心地忽略。)

如果你在包含以下内容的正下方添加以下几行额外词汇表包中,不应该出现可见的不需要的分隔符(使用 TeXlive 2019 测试):

\usepackage{etoolbox}
\apptoglossarypreamble{%
  \newtoggle{PrintDelimiter}
  \let\OLDdelimN\delimN \renewcommand*{\delimN}{\toggletrue{PrintDelimiter}}
  \let\OLDglsXpageXglsignore\glsXpageXglsignore \renewcommand*{\glsXpageXglsignore}[2]{\OLDglsXpageXglsignore{#1}{#2}\togglefalse{PrintDelimiter}}
  \let\OLDglsXpageXglsnumberformat\glsXpageXglsnumberformat \renewcommand*{\glsXpageXglsnumberformat}[2]{\iftoggle{PrintDelimiter}{\OLDdelimN}{}\OLDglsXpageXglsnumberformat{#1}{#2}\togglefalse{PrintDelimiter}}
}

结果应如下所示:

在此处输入图片描述

答案2

解决问题的另一种方法。请参阅 的定义\mygls\glshyperlink不会在文本 pagenumber-thingy 中创建词汇表->位置 :-)

\documentclass{article}

\usepackage[xindy,acronym]{glossaries-extra}
\makeglossaries

\newcommand{\mygls}[1]{\glshyperlink[\glsentrytext{#1}]{#1}}

\newglossaryentry{tech}
{%
  name={technology},
  description={Not to be confused with \mygls{pizza}.}
}

\newglossaryentry{pizza}
{%
  name={pizza},
  description={Food usually consumed with \mygls{beer}.}
}

\newglossaryentry{beer}
{%
  name={beer},
    description={Drink normally consumed with \mygls{pizza}.}
}


\newglossaryentry{sim}
{%
  name={simulated},
    description={A simulated newpage \newpage which also references \mygls{pizza}.}
}

\begin{document}

A glossary example. International \gls{tech} and \gls{pizza} use has
reached peak oil levels. As has \gls{sim} shenanigans.

\newpage

\printglossaries

\end{document}

相关内容