Latex decide ignorar o atributo see para \newglossaryentry ao usar a ativação de nonumberlist no pacote de glossários

Latex decide ignorar o atributo see para \newglossaryentry ao usar a ativação de nonumberlist no pacote de glossários

A coisa mais estranha aconteceu comigo hoje:

Eu estava procurando uma maneira de vincular uma abreviatura a uma entrada do glossário e encontreiesta resposta. Ao emular no meu código, não funcionou - pdflatexignoraria o seeatributo.

Brincando, descobri que isso só acontece quando o glossariespacote está incluído no nonumberlistatributo - algo que não deve ter nenhuma influência nos links.

Exemplo de código mínimo:

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

Como posso consertar isso? E por que isso está acontecendo?

Responder1

Este é um comportamento documentado. Citando deo manual:

lista sem númerosEsta opção irá suprimir as listas de números associadas nos glossários (ver também a Secção 5).

veja lista de numeração automáticaSe você suprimir as listas de números comlista sem números, descrito acima, isso também suprimirá qualquer informação de referência cruzada fornecida pela chave see em \newglossaryentryou \glssee. Se você usarveja lista de numeração automática, a chave see será implementada automaticamente nonumberlist=falsepara essa entrada. (Observe que isso não afeta \glssee.) Para obter mais detalhes, consulte a Seção 8.

Portanto, uma solução possível é definir também seeautonumberlist. Isso pode ter o efeito indesejado de que a entrada do acrônimo agora obtenha o número da página que você queria evitar nonumberlistem primeiro lugar:

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

Uma alternativa é adicionar a referência manualmente à descrição da sigla. Dessa forma, você também não obtém o número da página na entrada do acrônimo:

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

informação relacionada