我在文档的序言中定义了以下开关:
\newcommand{\lin}{\addfontfeature{Numbers=Lining}}
\newcommand{\old}{\addfontfeature{Numbers=OldStyle}}
当我编写代码时,我似乎收到“未定义的控制序列”错误:
\textbf{\old1432\lin. — Blah...}
我的印象是 xelatex 将我的自定义控制序列读取为'\old1432'(而不是预期的'\old'+'1432'中间没有空间— 预期结果:1234. ——废话……)。
语法高亮器(见上文)显然相信同样的...我连续编码了两个控制序列...其中第一个是'\old1432',紧接着是'\lin'。
正确的编码方法是什么,以便 xelatex 可以读取它,并且输出中 1234 之前没有前导空格,并且“1234”和随后的句点之间没有空格?
换句话说,我是否需要在这些控制序列后添加一个特定的终止符,以便 xelatex 可以确定它们的确切结束位置并与后续文本分开?
答案1
您没有提供测试文档,但是
\documentclass{article}
%\usepackage{fontspec}
\newcommand{\lin}{\addfontfeature{Numbers=Lining}}
\newcommand{\old}{\addfontfeature{Numbers=OldStyle}}
\begin{document}
\textbf{\old1432\lin. — Blah...}
\end{document}
产生错误
! Undefined control sequence.
\old ->\addfontfeature
{Numbers=OldStyle}
l.9 \textbf{\old1432\lin. — Blah...}
?
表明\addfontfeature
未定义。
fontspec
通过取消注释添加,\usepackage
它可以无错误运行(尽管有警告说这不适用于默认字体)