Самая странная вещь произошла со мной сегодня:
Я искал способ сделать ссылку из аббревиатуры на запись в глоссарии и нашелэтот ответ. При эмуляции в моем коде это не сработало - атрибут 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}