Как определить вложенный вызов в глоссариях newcommand - PullRequest
1 голос
/ 14 мая 2019

Используя пакет глоссариев, я реализовал комбинированный список глоссариев и сокращений, как описано здесь . Это отлично работает:

\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}}

... и это, вероятно, то, что я буду делать в настоящее время. Простое исправление будет приветствоваться, если оно доступно.

...