我有一些重要的内容“飞过”文档,我想列出这些内容。这些结果位于许多不同的部分(章节、尾注……),因此它们的位置(和数量)是可变的,在这种情况下,手动排序是不可行的。
我正在尝试将zref
包与\zref@extract
命令和词汇表的排序字段结合起来。问题是,当我输入提取命令时,词汇表包不会实现该值,它只是使用默认值,而我得到的顺序是错误的。
\documentclass{scrbook}
\usepackage[xindy, nomain, sanitizesort=false]{glossaries-extra}
\usepackage[titleref, user, abspage]{zref}
\newcounter{test}
\makeatletter
\zref@newprop{test}{\arabic{test}}
\zref@addprop{main}{test}
\makeatother
\newglossary*{here}{Test}
\makeglossaries
\makeatletter
\newglossaryentry{a\zref@extractdefault{a1}{test}{0}}{name={Here \zref@extractdefault{a1}{test}{0}},sort={a\zref@extractdefault{a1}{test}{0}},type=here, description={Here \zref@extractdefault{a1}{test}{0}}}
\newglossaryentry{a\zref@extractdefault{a2}{test}{1}}{name={Here \zref@extractdefault{a2}{test}{1}},sort={a\zref@extractdefault{a2}{test}{1}},type=here, description={Here \zref@extractdefault{a2}{test}{1}}}
\newglossaryentry{a\zref@extractdefault{a3}{test}{2}}{name={Here \zref@extractdefault{a3}{test}{2}},sort={a\zref@extractdefault{a3}{test}{2}},type=here, description={Here \zref@extractdefault{a3}{test}{2}}}
\newglossaryentry{a\zref@extractdefault{a4}{test}{3}}{name={Here \zref@extractdefault{a4}{test}{3}},sort={a\zref@extractdefault{a4}{test}{3}},type=here, description={Here \zref@extractdefault{a4}{test}{3}}}
\newglossaryentry{a\zref@extractdefault{a5}{test}{4}}{name={Here \zref@extractdefault{a5}{test}{4}},sort={a\zref@extractdefault{a5}{test}{5}},type=here, description={Here \zref@extractdefault{a5}{test}{4}}}
\newglossaryentry{a\zref@extractdefault{a6}{test}{5}}{name={Here \zref@extractdefault{a6}{test}{5}},sort={a\zref@extractdefault{a6}{test}{5}},type=here, description={Here \zref@extractdefault{a6}{test}{5}}}
\makeatother
\begin{document}
Here\setcounter{test}{4}\zlabel{a1}
Here\setcounter{test}{6}\zlabel{a2}
Here\setcounter{test}{10}\zlabel{a3}
Here\setcounter{test}{2}\zlabel{a4}
Here\setcounter{test}{3}\zlabel{a5}
Here\setcounter{test}{8}\zlabel{a6}
\glsaddall
\printglossary[style=list, nonumberlist, type=here]
\end{document}
这里我从命令的默认值中获取顺序\zref@extractdefault{a1}{test}{0}
。我想将参考值(即计数器的值)放在排序引擎上。
即,使用此代码我得到:
而且我要:
Here 2
Here 3
Here 4 and etc.
答案1
您的设置中的问题在于,.aux
设置标签的文件在 处读取begindocument
。因此,在序言中,标签根本不可用,因此您会在这些\zref@extractdefault
调用中获得默认值。
您可以将它们放在一个钩子中,以便在标签可用时完成词汇表条目:
\documentclass{scrbook}
\usepackage[xindy, nomain, sanitizesort=false]{glossaries-extra}
\usepackage[titleref, user, abspage]{zref}
\newcounter{test}
\makeatletter
\zref@newprop{test}{\arabic{test}}
\zref@addprop{main}{test}
\makeatother
\newglossary*{here}{Test}
\makeglossaries
\makeatletter
\AddToHook{begindocument/end}{%
\newglossaryentry{a\zref@extractdefault{a1}{test}{0}}{name={Here \zref@extractdefault{a1}{test}{0}},sort={a\zref@extractdefault{a1}{test}{0}},type=here, description={Here \zref@extractdefault{a1}{test}{0}}}%
\newglossaryentry{a\zref@extractdefault{a2}{test}{1}}{name={Here \zref@extractdefault{a2}{test}{1}},sort={a\zref@extractdefault{a2}{test}{1}},type=here, description={Here \zref@extractdefault{a2}{test}{1}}}%
\newglossaryentry{a\zref@extractdefault{a3}{test}{2}}{name={Here \zref@extractdefault{a3}{test}{2}},sort={a\zref@extractdefault{a3}{test}{2}},type=here, description={Here \zref@extractdefault{a3}{test}{2}}}%
\newglossaryentry{a\zref@extractdefault{a4}{test}{3}}{name={Here \zref@extractdefault{a4}{test}{3}},sort={a\zref@extractdefault{a4}{test}{3}},type=here, description={Here \zref@extractdefault{a4}{test}{3}}}%
\newglossaryentry{a\zref@extractdefault{a5}{test}{4}}{name={Here \zref@extractdefault{a5}{test}{4}},sort={a\zref@extractdefault{a5}{test}{5}},type=here, description={Here \zref@extractdefault{a5}{test}{4}}}%
\newglossaryentry{a\zref@extractdefault{a6}{test}{5}}{name={Here \zref@extractdefault{a6}{test}{5}},sort={a\zref@extractdefault{a6}{test}{5}},type=here, description={Here \zref@extractdefault{a6}{test}{5}}}%
}
\makeatother
\begin{document}
Here\setcounter{test}{4}\zlabel{a1}
Here\setcounter{test}{6}\zlabel{a2}
Here\setcounter{test}{10}\zlabel{a3}
Here\setcounter{test}{2}\zlabel{a4}
Here\setcounter{test}{3}\zlabel{a5}
Here\setcounter{test}{8}\zlabel{a6}
\glsaddall
\printglossary[style=list, nonumberlist, type=here]
\end{document}
您仍需解决排序问题,因为是glosarries
按第一位数字排序,而不是将其视为数字。但我明白您的问题是如何获取标签的值,只要您在之后查询标签,就可以了begindocument
。
但是,这似乎更适合目录而不是词汇表。一个简单的示例,使用tocloft
(只是一个例子,它与不相符scrbook
,但您可以在那里获得等效的功能):
\documentclass{book}
\usepackage{tocloft}
\newlistof{endoftheworldpart}{prt}{My Parts}
\newcommand{\mypart}[1]{%
\stepcounter{endoftheworldpart}
\addcontentsline{prt}{endoftheworldpart}{Here \arabic{endoftheworldpart}}}
\begin{document}
Here\mypart
Here\mypart
Here\mypart
Here\mypart
Here\mypart
Here\mypart
\listofendoftheworldpart
\end{document}