![Заглавные буквы в глоссарии, строчные в тексте](https://rvso.com/image/254682/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%B1%D1%83%D0%BA%D0%B2%D1%8B%20%D0%B2%20%D0%B3%D0%BB%D0%BE%D1%81%D1%81%D0%B0%D1%80%D0%B8%D0%B8%2C%20%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D1%8B%D0%B5%20%D0%B2%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B5.png)
Можно ли написать слово заглавными буквами в глоссариях, но строчными в тексте? Я мог бы использовать \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руководство для начинающих. Я не уверен, что это точно соответствует заданному вопросу, но это распространенное использование, из-за которого люди могут столкнуться с этим вопросом.