Glosarios y versalitas falsas usando fontspec

Glosarios y versalitas falsas usando fontspec

Quiero usar versalitas falsas al hacer una lista de abreviaturas usando el glossariespaquete. Estoy usando otra fuente, pero para fines de reproducibilidad en este ejemplo he usado Linux Libertine O. Para aclarar las cosas, también he exagerado el factor de escala en este ejemplo. Por alguna razón, a veces parece que mi \smallCapscomando funciona bien, pero en este caso no vuelve atrás. ¿Qué estoy haciendo mal?

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

ingrese la descripción de la imagen aquí

Respuesta1

Nunca debes usarlo \fontspecdentro del documento; Es un comando genérico utilizado por los comandos de nivel de usuario \setmainfonty \newfontfamilysimilares. Además, \setmainfontsólo debe utilizarse en el preámbulo.

Eliminé la \setmainfontdeclaración sólo para mostrar cómo se elige la fuente independientemente de la fuente principal. La clave es utilizar la shortclave en \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}

ingrese la descripción de la imagen aquí

Por otro lado, una mejor estrategia (suponiendo que no tenga otra forma de producir versalitas) es agregarlo en la definición de fuente:

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

Finalmente, la mejor estrategia si no tienes pequeñas capitalizaciones reales es evitarlas por completo.

información relacionada