Я хочу использовать поддельные малые заглавные буквы при создании списка сокращений с использованием glossaries
пакета. Я использую другой шрифт, но для целей воспроизводимости в этом примере я использовал Linux Libertine O
. Чтобы сделать вещи более понятными, я также преувеличил коэффициент масштабирования в этом примере. По какой-то причине иногда кажется, что моя \smallCaps
команда работает нормально, но в этом случае она не возвращается обратно. Что я делаю неправильно?
\documentclass{memoir}
\usepackage{glossaries}
\usepackage{fontspec}
\newcommand{\smallCaps}[1]{%
{\fontspec[Scale=0.5]{Linux Libertine O} #1}%
}
\setacronymstyle{long-short}
\begin{document}
%ABBREVIATIONS
\newacronym{ADR}{\smallCaps{ADR}}{adverse drug reaction}
\setmainfont{Linux Libertine O}
Works \smallCaps{FOO} does not work: \gls{ADR}). A more specific definition
for the term \gls{ADR} is
\end{document}
решение1
Никогда не следует использовать \fontspec
внутри документа; это общая команда, используемая командами уровня пользователя \setmainfont
и \newfontfamily
т. п. Также \setmainfont
следует использовать только в преамбуле.
Я удалил \setmainfont
объявление, чтобы показать, как шрифт выбирается независимо от основного шрифта. Ключ в том, чтобы использовать ключ short
в \newacronym
.
\documentclass{memoir}
\usepackage{glossaries}
\usepackage{fontspec}
\newcommand{\smallCaps}[1]{%
{\fontspec[Scale=0.5]{Linux Libertine O} #1}%
}
\setacronymstyle{long-short}
\begin{document}
%ABBREVIATIONS
\newacronym{ADR}{\smallCaps{ADR}}{adverse drug reaction}
\setmainfont{Linux Libertine O}
Works \smallCaps{FOO} does not work: \gls{ADR}). A more specific definition
for the term \gls{ADR} is
\end{document}
С другой стороны, лучшая стратегия (если у вас нет другого способа создать малые заглавные буквы) — добавить их в определение шрифта:
\documentclass{memoir}
\usepackage{fontspec}
\usepackage{glossaries}
\makeglossaries
\setmainfont{Latin Modern Roman}[
SmallCapsFont={Linux Libertine O},
SmallCapsFeatures={Scale=0.5},
]
\setacronymstyle{long-short}
\begin{document}
%ABBREVIATIONS
\newacronym[
short=\textsc{ADR}
]{ADR}{ADR}{adverse drug reaction}
Works \textsc{FOO} does not work: \gls{ADR}). A more specific definition
for the term \gls{ADR} is
\printglossaries
\end{document}
Наконец, лучшая стратегия, если у вас нет по-настоящему маленьких капитализаций, — вообще их избегать.