我想在使用包制作缩写列表时使用伪造的小型大写字母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}
最后,如果您没有真正的小型大写字母,最好的策略就是完全避免使用它们。