Latex решает игнорировать атрибут see для \newglossaryentry при использовании включения nonumberlist в пакете glossaries

Latex решает игнорировать атрибут see для \newglossaryentry при использовании включения nonumberlist в пакете glossaries

Самая странная вещь произошла со мной сегодня:

Я искал способ сделать ссылку из аббревиатуры на запись в глоссарии и нашелэтот ответ. При эмуляции в моем коде это не сработало - атрибут pdflatexбыл проигнорирован see.

Поэкспериментировав, я обнаружил, что это происходит только тогда, когда glossariesпакет включен в nonumberlistатрибут, а это не должно оказывать никакого влияния на ссылки.

Минимальный пример кода:

\documentclass{article}
\usepackage{hyperref}

\usepackage[nonumberlist, acronym]{glossaries}

\makeglossaries

%%% define the acronym and use the see= option
\newglossaryentry{css}{type=\acronymtype, name={CSS}, description={Cascading Style Sheets}, first={Cascading Style Sheets (CSS)}, see=[Glossary:]{cssg}}
\newglossaryentry{cssg}{name={Cascading Style Sheets},
                     description={A language for specifying presentation      attributed of XML documents.}}

\begin{document}

\glsaddall

% Acronyms
\printglossary[type=\acronymtype]

% Glossary
\printglossary[style=altlist,title=Glossary]

\end{document}

Как это исправить? И почему это вообще происходит?

решение1

Это задокументированное поведение. Цитата изруководство:

ненумерованныйсписокЭта опция отключит соответствующие списки номеров в глоссариях (см. также Раздел 5).

см.autonumberlistЕсли вы подавите списки номеров с помощьюненумерованныйсписок, описанный выше, это также подавит любую перекрестную ссылку, предоставленную клавишей see в \newglossaryentryили \glssee. Если вы используетесм.autonumberlist, ключ see будет автоматически реализован nonumberlist=falseдля этой записи. (Обратите внимание, что это не влияет на \glssee.) Более подробную информацию см. в разделе 8.

Поэтому возможным решением является также установка seeautonumberlist. Это может иметь нежелательный эффект, так как запись аббревиатуры теперь получит номер страницы, которого вы nonumberlistизначально хотели избежать:

% arara: pdflatex
% arara: makeglossaries
% arara: pdflatex
\documentclass{article}
\usepackage{hyperref}

\usepackage[nonumberlist,seeautonumberlist,acronym]{glossaries}

\makeglossaries

%%% define the acronym and use the see= option
\newglossaryentry{css}{
  type=\acronymtype,
  name={CSS},
  description={Cascading Style Sheets},
  first={Cascading Style Sheets (CSS)},
  see=[Glossary:]{cssg}
}
\newglossaryentry{cssg}{
  name={Cascading Style Sheets},
  description={A language for specifying presentation attributed of XML documents}
}

\begin{document}

\glsaddall

% Acronyms
\printglossary[type=\acronymtype]

% Glossary
\printglossary[style=altlist,title=Glossary]

\end{document}

Альтернативой является добавление ссылки вручную к описанию аббревиатуры. Таким образом, вы также не получите номер страницы в записи аббревиатуры:

% arara: pdflatex
% arara: makeglossaries
% arara: pdflatex
\documentclass{article}
\usepackage{hyperref}

\usepackage[nonumberlist,acronym]{glossaries}

\makeglossaries

%%% define the acronym
\newglossaryentry{css}{
  type=\acronymtype,
  name={CSS},
  description={Cascading Style Sheets. \textit{Glossary:} \gls{cssg}},
  first={Cascading Style Sheets (CSS)}
}
\newglossaryentry{cssg}{
  name={Cascading Style Sheets},
  description={A language for specifying presentation attributed of XML documents}
}

\begin{document}

\glsaddall

% Acronyms
\printglossary[type=\acronymtype]

% Glossary
\printglossary[style=altlist,title=Glossary]

\end{document}

Связанный контент