答案1
- 不加载
inputenc
或者fontenc
手动;使用 UTF-8 输入和fontspec
而不是包装 - 不要加载
textcomp
包;如果你想要宏输入各种符号,请加载xunicode
包(由 LOCKSTEP 编辑:据 Ulrike Fischer 称,xunicode
“在当前系统中,你根本不需要加载,fontspec
它会在正确的位置进行加载”) - 使用
polyglossia
代替babel
- 对于 OpenType 数学支持,使用
unicode-math
代替amsfonts
/amssymb
等等(但amsmath
可以/应该仍被使用)。 - 这
xltxtra
不再需要该包
此列表中的所有内容可能也适用于 LuaLaTeX,但例外xunicode
,它需要 XeTeX。
答案2
尝试使用以下方法实现此主题中给出的所有答案和评论ifxetex
pdflatex
包,我最终得到了以下代码作为我的序言。它允许在和编译器之间随时切换xelatex
。注意:切换编译器时,应删除文件.aux
。
\documentclass[
a4paper,
ngerman
]{scrbook}
\usepackage{amsmath}
\usepackage{ifxetex}
\ifxetex
% XeLaTeX
\usepackage{polyglossia}
\setmainlanguage[spelling=new,babelshorthands=true]{german}
\usepackage{fontspec}
\usepackage[]{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}
\else
% default: pdfLaTeX
\usepackage{babel}
\usepackage[T1]{fontenc}
%\usepackage{lmodern}
\usepackage[adobe-utopia]{mathdesign}
\usepackage[utf8]{inputenc}
\usepackage[babel=true]{microtype}
\fi
% some more packages like csquotes, biblatex, hyperref
\begin{document}
...
\end{document}
我必须amsmath
在 XeLaTeXsetmathfont
命令之前加载包以避免错误。\dddot already defined.
使用 MiKTeX 2.9 时必须使用 MiKTeX 包管理器手动安装 XITS 字体。
答案3
除了您提到的软件包之外,我唯一的区别就是我不加载软件包inputenc
并且不设置字体编码。
此外,如果您在软件包选项中给出了显式驱动程序名称(例如hyperref
或xcolor
),则应删除这些名称。这些驱动程序名称在最坏的情况下是错误的,在最好的情况下是多余的,因为软件包在 中加载时会自动找到正确的驱动程序xelatex
。