
Можно ли написать слово заглавными буквами в глоссариях, но строчными в тексте? Я мог бы использовать \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руководство для начинающих. Я не уверен, что это точно соответствует заданному вопросу, но это распространенное использование, из-за которого люди могут столкнуться с этим вопросом.