我想修改glossaryentryfield,以便根据user1(包提供的密钥是否已定义/设置)创建输出。我尝试了以下内容:
\renewcommand*{\glossaryentryfield}[5]{\bfseries{\glstarget{##1}{##2}} & ##3 \\
\ifempty{\glsentryuseri{##1}}
it & is very empty \\
\else
& \glsentryuseri{##1} \\%
\fi}
然而,导致了几个错误消息:
!未定义的控制序列。 \ ifempty l.49 \ setentrycounter {page} \ glsnumberformat {a}}} %控制序列结束时 您的错误消息的第一行是 从不\ def'ed。如果你拼错了 它(例如,
\hobx'), type
我'和 正确的拼写(例如,'I \ hbox')。 否则就继续,我会 忘记任何未定义的东西。
(似乎每个词汇表条目一个)显然后跟一个无法匹配的\ else和不匹配的\ fi
据我所见,我必须对扩展订单做一些事情,但我是乳胶的完全新手。 我不能简单地设置所有user1-keys,因为我只想在定义user1时显示额外的行,另一行仅用于调试目的。
我还尝试在\ if(\ expandafter \ ifempty {\ glsentryuseri {## 1}})之前直接添加\ expandafter(导致以下输出:)
user1value it&是非常空的\\& user1value
因为没有人可以发现这个我在the latex community交叉了它并在那里添加了一个最小的例子。一旦它在一个站点上被忽略,我将立即交叉解决方案
答案 0 :(得分:0)
Nicola Talbot在latex community上提出了我的问题,她写道:
\ ifempty未在标准中定义 LaTeX,这是造成这种情况的原因 错误信息。你可以使用ifmtarg 包,提供内部 命令\ @ifmtarg。例如:
\documentclass{article} \usepackage{ifmtarg} \usepackage[style=long]{glossaries} \makeglossaries \makeatletter \newcommand*{\ifuseriempty}[3]{% \protected@edef\tmp{\glsentryuseri{#1}}% \expandafter\@ifmtarg\expandafter{\tmp}{#2}{#3}% } \makeatother \renewcommand*{\glossaryentryfield}[5]{\bfseries{\glstarget{#1}{#2}} & #3 \\ \ifuseriempty{#1}% {it &is very empty}% { &\glsentryuseri{#1}}% \\% } \newglossaryentry{sample}{name=sample,% description={sample without user 1 key}} \newglossaryentry{sample2}{name=sample2,% description={sample with user 1 key}, user1={User1 Value}} \begin{document} \gls{sample}, \gls{sample2}. \printglossaries \end{document}
关心Nicola Talbot
就我的目的而言,词汇表区域必须如下所示:
\ renewcommand * {\ glossaryentryfield} [5] {\ bfseries {\ glstarget {#1} {#2}} &安培; #3 \ \ ifuseriempty {#1}% {}% {& \ glsentryuseri {#1} \}% }
如果要在\ newglossarystyle enviornment
中使用##,请记住使用##而不是参数号的#infront