Заглавные буквы в глоссарии, строчные в тексте

Заглавные буквы в глоссарии, строчные в тексте

Можно ли написать слово заглавными буквами в глоссариях, но строчными в тексте? Я мог бы использовать \glslinkвместо \gls, но нет ли лучшего решения?

Вот пример, поясняющий, чего я хочу:

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

Это дает:

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

решение1

Есть простое решение. Вы можете задать текст, который появляется в глоссарии, и текст, который появляется в... тексте отдельно.

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

решение2

Для будущих пользователей, столкнувшихся с такой же проблемой:

Я сам столкнулся с этой проблемой и нашел этот вопрос и егодубликат. Решение @Nitram было полезным в случае, когда первое слово было определено как макрос. Однако:

  • Я не хотел дублировать все записи имен,
  • Я хотел сохранить контроль над тем, что пишется с заглавной буквы, а что нет (в случае математических символов в качестве первых символов),
  • Я хотел сохранить обычное поведение, если меня ни о чем конкретно не спрашивают.

Из ответа @nicola-talbotтам, я нашел простое переопределение, которое решает эту задачу:

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

Примеры:

Использование: выводит «Первое слово с заглавной буквы» в глоссарии и \gls{firstexample} в тексте выводит «первое слово с заглавной буквы»:

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

Это не будет работать с макросом (все слово будет написано заглавными буквами), поэтому используйте текстовое поле:

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

Сначала у меня математика, нормальное использование имени: и в глоссарии, и в тексте \gls{firstexample} выводит "$i$-th blabla":

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

решение3

Я использовалОтвет Николы, так как ни один из ответов здесь мне не помог.

Пакет glossaries-extraпозволяет легко настроить заглавные буквы с помощью firstuc. Мне не пришлось менять много кода предпросмотров или вызовов. Просто измените пакет и добавьте следующий код:

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

решение4

В тексте можно использовать как заглавные, так и строчные буквы; \Gls{}даст заглавное слово или термин, как в начале предложения. В других местах \gls{}также может использоваться для строчной формы. См. раздел 3руководство для начинающих. Я не уверен, что это точно соответствует заданному вопросу, но это распространенное использование, из-за которого люди могут столкнуться с этим вопросом.

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