Palavra maiúscula no glossário, minúscula no texto

Palavra maiúscula no glossário, minúscula no texto

É possível escrever uma palavra em maiúscula nos glossários mas em minúscula no texto? Eu poderia usar \glslinkem vez de \gls, mas não há solução melhor?

Aqui está um exemplo para esclarecer o que eu quero:

\documentclass[a4paper]{article}

\usepackage{hyperref}
\usepackage{glossaries}

\makeglossaries
\newglossaryentry{lowercase}{name={lowercase}, description={In the glossary, this word should be capitalized}}
\newglossaryentry{uppercase}{name={Uppercase}, description={This word is capitalized}}

\begin{document}

Should both be lowercase: \gls{lowercase}, \gls{uppercase}.

Workaround: \gls{lowercase}, \glslink{uppercase}{uppercase}.

\printglossaries

\end{document}

Isso produz:

Should both be lowercase: lowercase, Uppercase.
Workaround: lowercase, uppercase. 

Glossary
lowercase In the glossary, this word should be capitalized. 1
Uppercase This word is capitalized. 1

Responder1

Há uma solução simples. Você pode definir o texto que aparece no glossário e o texto que aparece no... texto separadamente.

\newglossaryentry{uppercase}{
    name={Uppercase},
    text={uppercase},
    description={Appears uppercase in the glossary and lowercase in the text}
}

Responder2

Para futuros usuários que encontrarem o mesmo problema:

Eu mesmo encontrei o problema e encontrei esta pergunta e suaduplicado. A solução da @Nitram foi útil no caso de uma primeira palavra definida como macro. No entanto:

  • Eu não queria duplicar todas as entradas de nomes,
  • Eu queria manter o controle do que está em maiúscula e do que não está (caso de símbolos matemáticos como primeiros caracteres),
  • Queria manter o comportamento habitual caso nada fosse solicitado especificamente.

De uma resposta de @nicola-talbot, encontrei uma redefinição simples que resolve o problema:

\usepackage{mfirstuc}
\renewcommand{\glsnamefont}[2][]{\capitalisewords{#1}\xspace#2}

Exemplos:

Uso: gera "Primeira palavra em maiúscula" no glossário, e \gls{firstexample} no texto gera "primeira palavra em maiúscula":

\newglossaryentry{firstexample}{
  name={first}{word capitalized}
}

Isso não funcionará com uma macro (colocará a palavra inteira em maiúscula), daí o uso do campo de texto:

\newglossaryentry{boite}{
  name={\Boite de valeurs},
  text={\boite de valeurs}
}

Eu tenho matemática primeiro, uso normal do nome: tanto no glossário quanto no texto \gls{firstexample} produz "$i$-th blabla":

\newglossaryentry{iblabla}{
  name={$i$-th blabla}
}

Responder3

eu useiA resposta de Nicola, já que nenhuma das respostas aqui funcionou para mim.

O glossaries-extrapacote permite configurar facilmente a capitalização com firstuc. Não tive que alterar muito meu código de visualização, nem chamadas. Basta alterar o pacote e adicionar o seguinte código:

\setglossarystyle{long}
\setabbreviationstyle[acronym]{long-short}
\glssetcategoryattribute{acronym}{glossdesc}{firstuc}

Responder4

É possível usar letras maiúsculas e minúsculas no texto; \Gls{}dará a palavra ou termo em maiúscula, como no início da frase. Em outros locais, \gls{}também pode ser usado para o formato minúsculo. Consulte a seção 3 doGuia do iniciante. Não tenho certeza se isso aborda exatamente a pergunta feita, mas é um uso comum para o qual as pessoas podem encontrar essa pergunta.

informação relacionada