Glossários e versaletes falsos usando fontspec

Glossários e versaletes falsos usando fontspec

Quero usar versalete falsa ao fazer uma lista de abreviações usando o glossariespacote. Estou usando outra fonte, mas para fins de reprodutibilidade neste exemplo usei Linux Libertine O. Para deixar as coisas mais claras, também exagerei no fator de escala neste exemplo. Por alguma razão, às vezes parece que meu \smallCapscomando funciona bem, mas neste caso ele não volta novamente. O que estou fazendo de errado?

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

insira a descrição da imagem aqui

Responder1

Você nunca deve usar \fontspecdentro do documento; é um comando genérico usado pelos comandos de nível de usuário \setmainfonte \newfontfamilysimilares. Também \setmainfontdeve ser usado apenas no preâmbulo.

Removi a \setmainfontdeclaração apenas para mostrar como a fonte é escolhida independentemente da fonte principal. A chave é usar a shortchave em \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}

insira a descrição da imagem aqui

Por outro lado, uma estratégia melhor (supondo que você não tenha outra maneira de produzir versalete) é adicioná-la na definição da fonte:

\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, a melhor estratégia se você não tiver verdadeiras small caps é evitá-las completamente.

informação relacionada