Как определить вложенный вызов в глоссариях newcommand
Используя пакет глоссариев, я реализовал комбинированный глоссарий и список сокращений, как описано здесь. Это прекрасно работает:
\newcommand{\agls}[4]{
\newglossaryentry{#1}{
text={#2},
long={#3},
name={\glsentrylong{#1} (\glsentrytext{#1})},
first={\glsentryname{#1}},
firstplural={\glsentrylong{#1}\glspluralsuffix (\glsentryname{#1}\glspluralsuffix )},
description={#4}
}
}
\agls{a:bim}{BIM}{Building Information Modeling}{3D Something}
Вскоре я заметил, что большинство моих описаний глоссария заканчиваются See \cref{sec:myLabel}
, Вот почему я попытался изменить это так:
\newcommand{\agls}[5][]{
\newglossaryentry{#2}{
text={#3},
long={#4},
name={\glsentrylong{#2} (\glsentrytext{#2})},
first={\glsentryname{#2}},
firstplural={\glsentrylong{#2}\glspluralsuffix (\glsentryname{#2}\glspluralsuffix )},
description={#5. See \cref{#1}}
}
}
\agls[subsec:bim]{a:bim}{BIM}{Building Information Modeling}{3D Something}
(Не берите в голову сломанную ссылку, если опциональный аргумент опущен, я исправлю это позже с \ifthenelse
)
Однако это приводит к ошибкам:
Argument of \@cref@stack@top has an extra }. \glsXpageXglsnumberformat{}{17}}}
Paragraph ended before \@cref@stack@top was complete. \glsXpageXglsnumberformat{}{17}}}
Похоже, латекс смущен несколькими закрывающими фигурными скобками. Я уже пытался перевести вызов в отдельную команду, но это ничего не изменило:
\newcommand{\lref}[1][]{See \cref{#1}}
... description={#5. \lref[#1]} ...
Как я могу это исправить?
Обновление: я только что заметил, что я мог бы так же хорошо использовать
\newcommand{\see}[1]{Siehe \cref{#1}}
\agls{a:bim}{BIM}{Building Information Modeling}{3D Something \see{subsec:bim}}
... и это, вероятно, то, что я буду делать в настоящее время. Простое исправление будет приветствоваться, если оно доступно.