Глоссарии и поддельные капители с использованием fontspec

Глоссарии и поддельные капители с использованием fontspec

Я хочу использовать поддельные малые заглавные буквы при создании списка сокращений с использованием 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}

Наконец, лучшая стратегия, если у вас нет по-настоящему маленьких капитализаций, — вообще их избегать.

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