我一直尝试将一些代码复制并粘贴到 LyX 中(通过“程序列表”菜单项),当我编译文档时出现 LyX 错误:
Could not find LaTeX command for character '' (code point 0x2009)
LyX 还建议我将尝试复制和粘贴的文档转换为 UTF-8。但是,我运行了 afile --mime <mycodefile.py>
和 a file --mime <mycodefile.py>
,结果都返回了charset=us-ascii
。
如果我错了,那就更正吧,但是 ascii 不是 UTF-8 的子集吗?如果是,这个有问题的 0x2009 字符来自哪里,我该如何解决这个问题?
谢谢
注意:我没有复制粘贴,而是尝试使用“插入 > 文件 > 纯文本...”,但还是出现了同样的错误。所以,剪贴板中的文本并不是以某种方式重新编码的。
编辑:
出于某种原因,在重新启动 lyx 后,我可以编译(拍额头)。当我最初复制/粘贴时,编码可能是 unicode,但后来我使用 cntl-Z 并使用 vim 将其切换到 UTF-8。这个错误不知何故一直持续到重新启动。
答案1
这个错误有点误导,因为有人可能会把引号误认为是违规字符,而事实上,真正的违规字符是一个细空格(见http://www.unicodemap.org/details/0x2009/index.html)。
从某些应用程序(例如 Adobe Reader)复制时,会复制诸如细空格和粗空格、短划线和省略号之类的 Unicode 字符。将其粘贴到 LyX(和其他文本编辑器)时会出现问题。即使 LaTeX 不将 Unicode 字符映射到字体中的相关字符,这些编辑器也会将 Unicode 字符接受为有效的纯文本字符,并且无论在文档源代码中选择了哪种编码,都会发生这种情况。
除了找出有问题的空格并用常规空格替换它们之外,我没有其他通用的解决方案,这是一项非常繁琐的任务。对于较长的文本,您应该使用搜索和替换。我希望其他人可以提出更自动化的解决方案。
答案2
将代码粘贴到文本编辑器中并保存为 ANSI。然后找出未正确显示的字符。