Quero usar versalete falsa ao fazer uma lista de abreviações usando o glossaries
pacote. 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 \smallCaps
comando 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}
Responder1
Você nunca deve usar \fontspec
dentro do documento; é um comando genérico usado pelos comandos de nível de usuário \setmainfont
e \newfontfamily
similares. Também \setmainfont
deve ser usado apenas no preâmbulo.
Removi a \setmainfont
declaração apenas para mostrar como a fonte é escolhida independentemente da fonte principal. A chave é usar a short
chave 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}
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.