我试图在TextMate中输入一些UTF-8字符到LaTeX文件(它说它的默认编码是UTF-8),但LaTeX似乎不理解它们。

运行cat my_file.tex可以在Terminal中正确显示字符。运行ls -al会显示一些我以前从未见过的东西:文件列表旁边的“@”:

-rw-r--r--@  1 me      users      2021 Feb 11 18:05 my_file.tex

(并且,是的,我在LaTeX中使用\usepackage[utf8]{inputenc}。)

我找到了iconv,但这似乎不能告诉我编码是什么-它只会转换一旦我弄清楚。


当前回答

经典的8位LaTeX只能使用UTF8字符;它高度依赖于您所使用的字体的编码以及该字体具有哪些可用的字形。

由于您没有给出具体的示例,因此很难确切地知道问题在哪里——您是否试图使用字体没有的字形,或者您是否首先就没有使用正确的字体编码。

下面是一个演示如何在LaTeX文档中使用几个UTF8字符的最小示例:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\begin{document}
‘Héllø—thêrè.’
\end{document}

使用[utf8x]编码可能会更幸运,但要稍微警告一下,与[utf8]相比,它不再受支持,并且具有一些特性(据我回忆;我已经有一段时间没有看它了)。但如果成功了,那对你来说就够了。

其他回答

vim -c 'execute "silent !echo " . &fileencoding | q' {filename}

在我的bash配置中的某个地方别名为

alias vic="vim -c 'execute \"silent \!echo \" . &fileencoding | q'"

所以我就输入

vic {filename}

在我的香草OSX Yosemite上,它产生的结果比“file -I”更精确:

$ file -I pdfs/udocument0.pdf
pdfs/udocument0.pdf: application/pdf; charset=binary
$ vic pdfs/udocument0.pdf
latin1
$
$ file -I pdfs/t0.pdf
pdfs/t0.pdf: application/pdf; charset=us-ascii
$ vic pdfs/t0.pdf
utf-8

Synalyze它!允许比较ICU库提供的所有编码中的文本或字节。使用该功能,您通常会立即看到哪个代码页对您的数据有意义。

在file命令上使用-I(大写i)选项似乎可以显示文件编码。

file -I {filename}

你也可以使用下面的命令从一个文件类型转换到另一个文件类型:

iconv -f original_charset -t new_charset originalfile > newfile

如。

iconv -f utf-16le -t utf-8 file1.txt > file2.txt

你用的是哪种乳胶?当我使用teTeX时,我必须手动下载unicode包,并将其添加到我的.tex文件中:

% UTF-8 stuff
\usepackage[notipa]{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}

现在,我已经从TeXlive 2008包切换到XeTeX(这里),它甚至更简单:

% UTF-8 stuff
\usepackage{fontspec}
\usepackage{xunicode}

至于检测文件的编码,您可以使用file(1)(但它相当有限),但就像其他人所说的那样,这很困难。