\'. 使用 fontspec 包时出现错误

\'. 使用 fontspec 包时出现错误

以下是最小示例:

\documentclass{article}
\usepackage{fontspec}
\begin{document}
The logo `\TeX\'.
\end{document}

产生错误:

./test.tex:5: Argument of \end has an extra }.
<inserted text> 
                \par 
l.5 \end
        {document}
? 

这里有什么问题?

只是为了避免你为什么要在句号上加一个尖音符这样的论点,我需要说,对于我所教授的 TeX 课程,我使用 TeXBook,而这个特定示例来自第 3 章中的 TeXBook。

答案1

命令\'变成\EU1-cmd\' \EU1\'然后\EU1-cmd检查组合

\\EU1\'-.

已定义;控制序列具有\EU1\'-.名称,可通过以下方式检查

\expandafter\show\csname\string\EU1\string\'-.\endcsname

这使

> \\EU1\'-.=macro:
->\TIPAaccent {\textdotacute }.

现在问题随之而来,因为\TIPAaccent需要两个参数,并且它发现\end这对于它来说肯定不是一个好的标记。

以下是一个例子:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Gentium}
\begin{document}
\'.e
\end{document}

需要 Genium 是因为 Latin Modern 没有所需的字形。

在此处输入图片描述

总之,\TeX\'.显示了 后的反斜杠的错误用法\TeX

如果\'.出于演示目的,您可以使用我在中建议的命令取消复合声明https://tex.stackexchange.com/a/58115/4427

\documentclass{article}
\usepackage{fontspec}
\setmainfont{CMU Serif}

\providecommand*\UndeclareTextComposite[3]{%
  \expandafter\let\csname\expandafter\string\csname
  #2\endcsname\string#1-#3\endcsname\relax}

\UndeclareTextComposite{\'}{EU1}{.}

\begin{document}
`\TeX\'.
\end{document}

重音的位置与 不同cmr10;这取决于字体。

在此处输入图片描述

相关内容