当使用等宽字体、西班牙语且单词以“r”开头时,会出现“!错误字符代码 (-1)”

当使用等宽字体、西班牙语且单词以“r”开头时,会出现“!错误字符代码 (-1)”

当我尝试使用西班牙语和等宽字体的 babel 包编译包含以“r”开头的引号单词的 PDF 时,遇到了一个奇怪的问题。

这个最小的例子

\documentclass[]{book}
\usepackage[spanish]{babel}
\begin{document}

\texttt{"rword"}

\end{document}

失败并出现错误

! Bad character code (-1).
\es@chf ->\char \hyphenchar \font
l.5 \texttt{"rword"}
A Unicode scalar value must be between 0 and "10FFFF.
I changed this one to zero.

如果我

  1. 删除\usepackage[spanish]{babel}(但需要渲染两次),
  2. 使用\usepackage[ensligh]{babel}
  3. 删除等宽格式("rword"而不是\texttt{"rword"}
  4. 删除引号(\texttt{rword}而不是\texttt{"rword"}
  5. 删除“r”(\texttt{"word"}而不是\texttt{"rword"})或将其更改为任何其他字母。

在引号和字母“r”之间添加任意数量的空格仍然会触发错误。

虽然除“r”之外的其他字母也能编译,但其中一些会导致奇怪的输出。例如,这是来自\texttt{"aword"}

一个句号,后跟一个小上标“a”,然后是一个正常大小的“单词”,以引号结尾,中间没有空格

我尝试了 Texmaker 上可用的所有 LaTeX 引擎(XeLaTeX、LuaLaTeX、PDFLaTeX 和 LatexMk),但它们都因相同的错误而失败。此时此刻,我只是对这个错误的特殊性感到困惑和困惑。

答案1

此问题是由babel西班牙语的简写引起的"。使用

\usepackage[spanish,shorthands=off]{babel}

解决了问题。您也可以使用 暂时禁用它\shorthandoff(正如 David Carlisle 在评论中提到的那样),然后使用 重新启用\shorthandon它。您可能会定义一个执行此操作并切换到 的环境\ttfamily。如果您需要其他速记,您也可以只关闭那一种速记。但是,如果您以西班牙语为主要语言写作,您可能可以在键盘上输入所需的所有字符,而不需要速记。

你也可以通过以下方式判断babel"r不是简写:

"{}rword"

然而,在 TeX 中"结束引号(当它不是特殊字符时),因此您可能想要加载\usepackage{fontspec}\usepackage[T1]{fontenc}写入

``rword" or “rword”

这可能就是为什么该包"a首先认为将等定义为简写是可以接受的。

如果您确实想以等宽字体逐字显示带有直引号的命令的确切语法,则可能需要使用环境verbatim

相关内容