乳胶中没有简单的 UTF8 支持?

乳胶中没有简单的 UTF8 支持?

以下内容在您的浏览器中看起来应该不错,并且在 Latex 中编译看起来也很漂亮,对吗?

\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
UTF-8 test:
\begin{verbatim}
logic:  not:¬
        and: ∧  nand:⊼
        or: ∨   nor:⊽
        inequal to, xor:≢,≠,⊻,⊕     equal to: ≡,=
Set logic:  ∪,∩,⊊,⊋,⊆,⊇,⊈,⊉,≡ 
    avoid useage of non-specific: ⊂,⊃,⊄,⊅
Set Membership:∈,∉,∌,∋,∅
assignment ≔≕
predicate logic:∃,∄,∀,∴,∵
regex: /|\.⋆^?+(){,}[]
Arrows: ↖↑↗⇖⇑⇗
        ←↔→⇐⇔⇒⇕↕
        ↙↓↘⇙⇓⇘
        ↚↮↛⇍⇎⇏
numbers:ℕatural={0,1,2,3, … ∞}, ℤintegers,
        ℚ=rational, ¬ℚ=irrational,
        ℝeal, ±∞, ℂomplex
size: ≤,≥,<,>,≮,≯,≰,≱,≪,≫,≢,≠,≡,=
Greek Alphabet:
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣ ΤΥΦΧΨΩ
αβγδεζηθικλμνξοπρσςτυφχψω
Game:
Chess symbols:♚♛♜♝♞♟♔♕♖♗♘♙
Playing card symbols:♠♣♥♦ 23456789JQKA
miscellaneous:°∙■□▪▫○●☇
\end{verbatim}
\end{document}

目前(2010 年 12 月 12 日,使用最新的 ubuntu 和所有更新的软件包)我收到以下错误:

! Package inputenc Error: Unicode char \u8:**"insert random char here"** not set up for use with LaTeX.

答案1

最初的 TeX 引擎并非为处理多字节编码而设计的。因此,任何在此基础上提供 Unicode 功能的软件包都必定是不完美的。不过,有两个新引擎确实提供了完整的 Unicode 支持:LuaTeX特克斯。还有一个软件包可以轻松选择任何 OpenType 或 TrueType 字体以供这些引擎使用:fontspec。(还有unicode-math它支持 Unicode 数学字体,例如星火(或者西安国际旅行社) 和坎布里亚数学,但它仍处于深入开发阶段并且尚未完全完成。)

请注意,Ubuntu 10.10(及更早版本)附带的这些引擎和软件包的版本非常过时。如果你想使用它们,你必须手动安装TeX Live 2010(这很容易)。

更新后,您可以使用lualatexxelatex编译以下代码:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{FreeSerif}
\setmonofont{FreeMono}

\begin{document}
\begin{verbatim}
% your example here
\end{verbatim}
\end{document}

这将设置FreeSerif为主字体(免费衬线不是最漂亮的字体,但我不知道有任何其他免费字体可以在 Unicode 覆盖率方面与它相媲美;它是 Ubuntu 预装的——事实上你的浏览器可能用它来显示符号)和FreeMono等宽字体(免费单声道缺少国际象棋符号和对角线箭头,但提供了示例中的所有其他内容;Free Serif 可以提供所有内容,但不是等宽字体)。另一个具有良好 Unicode 覆盖率的免费字体系列是似曾相识,基于比特流维拉编译后的文档如下所示:

例子

当然,你可以\setmonofont{FreeMono}用替换\setmonofont{FreeSerif}。这样你的verbatim文本就不再是等宽的,而是包含所有符号。请参阅fontspec手动的实现其他可能的奇特事物。

如果你正在编写混合多种语言和脚本的文本,那么单一字体可能无法涵盖所有​​可能的符号。在这种情况下polyglossia包裹将会派上用场(目前仅适用于 XeLaTeX)。

答案2

带有 utf8 选项的 inputenc 仅知道 unicode 子集的定义。并且它默认只会从这个子集中加载一小部分。如果您想要更多定义,则应加载相应的字体编码。如果您想要完整的 unicode 支持,请使用支持 unicode 的引擎,如 xetex 或 luatex(但我怀疑您是否会找到许多支持国际象棋的字体)。

答案3

对于 Unicode 支持,您需要使用特克斯。它默认支持使用UTF-8编码的文件。维基百科上的 XeTeX 页面也很有用。

答案4

用这个:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Arial Unicode MS}
\begin{document}
 ... (your font list, but not verbatim, because arial is not a typewriter font) ...
\end{document}

lualatex。就这样。

但是您将需要一个合适的Unicode字体。

相关内容