当我使用 Latex 编译源代码时,出现以下错误消息
Unicode 字符 \u8:未设置为用于 LaTeX。
现在我怀疑这是由于一个不可见的字符造成的。该命令:set list
没有显示任何可疑内容,而且:set display+=uhex
似乎对我不起作用。这这篇文章让我假设我也遇到了一些可疑的事情。
有没有办法在 vim 中显示一切我的文件中有哪些不可打印的字符?我使用的是 MacVim 版本 7.3 (53)。
答案1
你可以:
:setlocal display=uhex
通过十六进制数显示非 ASCII 字符。你也可以尝试亮点不可打印字符:
:set hlsearch
/\(\p\|$\)\@!.
然后有一个isprint
选项可以控制哪些字符是“可打印的”。
如果这没有帮助,您可能需要:%!xxd
逐字节检查在遇到问题的位置周围是否存在“可疑”的东西。
答案2
Vim 通常显示某物对于文件中的每个字符,空格、制表符和行尾序列或字符除外。我不认为这是一个隐藏字符问题;我认为这是文件编码问题。我认为 Vim 使用 UTF-8 对文件中的某些字符进行编码,而 LaTeX 需要 ASCII 或 Latin1。(我几乎只使用 ASCII,所以我肯定不是其他编码方面的专家。)
要检查 Vim 使用的编码,请执行
:set enc?
我猜这会返回“utf-8”。一种解决方案可能是使用 Latin1 编码保存文件。为此,请执行
:set fenc=latin1
:w
如果你想要在文件中查找任何非 ASCII 字符并在需要时进行更改,请使用以下命令搜索 0x80 至 0xff 范围内的字符
/[\x80-\xff]
要了解有关 Vim 使用不同编码的更多信息,请参阅
:help enc
:help fenc
:help 45.3
答案3
使用 vim 的另一种方法是运行
tr -d '[a-zA-Z0-9!#@_?+ \t\n\\()"^~`%-]'\'{} < your_latex_file.tex | hexdump -c
这应该为您提供有关哪些字符不在正常可打印字符范围内的信息。