我有以下 LaTeX 文档,以 UTF-8 字符集编码保存:
\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
φΔδ汉
\end{document}
(它有 3 个希腊字符,后面跟着一个中文字符。)当我尝试编译它时,出现以下错误:
$ latex foo
This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010)
restricted \write18 enabled.
[...]
! Package inputenc Error: Unicode char \u8:φ not set up for use with LaTeX.
如何在 UTF-8 编码.tex
文件中使用这些字符和其他字符?
答案1
inputenc
即使有这个选项,这个包utf8
也不会加载所有的 Unicode 表。它只加载那些它知道需要排版一些字形的表。
然后您必须教授适当的环境,因为每个 Unicode 块都需要不同的 TeX 字体(它们只有 256 个字符)。
因此,您的示例可以适用于pdflatex
,但可以修改为以下代码。
\documentclass{article}
\usepackage[LGRx,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[greek,english]{babel}
\usepackage{CJKutf8}
\begin{document}
\foreignlanguage{greek}{φΔδ}\begin{CJK}{UTF8}{gbsn}汉\end{CJK}
\end{document}
不可否认,这对于广泛使用属于不同块的字符来说基本上不切实际,因此建议切换到可以使用 OpenType 字体的 XeLaTeX 或 LuaLaTeX。
重要更新
Babel 3.9 版发布后,LGRx
不应再使用该编码。现在,只要使用 加载希腊语,LaTeX 就可以正确解释希腊语的 UTF-8 字符babel
。因此,上面的例子变成了
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[greek,english]{babel}
\usepackage{CJKutf8}
\begin{document}
\foreignlanguage{greek}{φΔδ}\begin{CJK}{UTF8}{gbsn}汉\end{CJK}
\end{document}
答案2
utf8
pdflatex
Unicode 仅包含有限的子集。xelatex
使用
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Code2000}
%\setmainfont{Arial Unicode MS}
\begin{document}
φΔδ汉
\end{document}
代码2000可以用具有所有字符的另一种 OpenType 或 TrueType 字体替换,例如 Arial Unicode。
答案3
当tex编辑器文件编码和文档文件编码不一样时,就会出现这个错误。
例如,编辑器文件编码为 ISO-8859-1,文档中有\usepackage[utf8]{inputenc}
命令。将编辑器文件编码更改为 UTF-8,然后重新启动编辑器。
(你的编辑可能指的是文件编码为字体编码。详情见注释。
答案4
我只想添加我的用例,它基本上涉及手动安装LGRx
:
本质上,我想要的只是能够μW
在源文件中直接以 UTF-8格式输入单位.tex
(也就是说,我不想输入像这样的构造\foreignlanguage{greek}{μ}W
);而且我需要使用pdflatex
。
目前我使用的机器装有 texlive 2011,目前无法完全升级它。
在 texlive 2011 上,组合:
[utf8x]{inputenc/x}
+[LGR, T1]{fontenc}
+{textcomp}
通常情况下,它工作正常。不幸的是,问题在于,我还需要使用biblatex
,这会阻碍正在加载的ucs
包utf8x
。
因此,我尝试了接受的答案中所推荐的方法 - 但事实证明, texlive 2011 中[LGRx,T1]{fontenc}
没有编码......LGRx
因此,经过一番挖掘之后,我最终做了以下事情bash
:
wget http://milde.users.sourceforge.net/LGR/lgrxenc.def -O /path/to/texlive/2011/texmf-dist/tex/generic/babel/lgrxenc.def
texhash
wget http://milde.users.sourceforge.net/LGR/lgrenc.dfu -O /path/to/texlive/2011/texmf-dist/tex/latex/base/lgrenc.dfu
texhash
请注意,您必须致电texhash
(请参阅LaTeX/安装额外软件包:4. 更新你的索引 - 维基教科书),否则pdflatex
将找不到新下载的文件。
有了这些,现在组合
[utf8]{inputenc/x}
+[LGRx, T1]{fontenc}
+{textcomp}
... 工作正常,如本例所示:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[LGRx, T1]{fontenc}
\usepackage{textcomp}
\usepackage[backend=biber]{biblatex} % just testing - is OK
\begin{document}
μW
\end{document}
注意
- 这lgrxenc文件我下载的是 v0.6/2012-06-29,它包含
\DeclareTextSymbol{\textmu}{LGR}{109}
- 虽然最新的lgrxenc.def v0.8 2013-05-30是“新 lgrenc.def 的向后兼容文件”,并且定义较少(\textmu
并且不是存在于其中) - 这lgrenc.dfu我下载的是 v0.2 2012-06-27;最新的是lgrenc.dfu v1.4.1 2013-07-18现在它在树中的位置不同了 - 但它们都包含
\DeclareUnicodeCharacter{03BC}{\textmu}
- 文本文件是需要的,因为它定义了
\DeclareTextSymbolDefault{\textmu}{TS1}
好吧,希望这对某人有帮助,
干杯!