尽管我对德语一无所知,但我必须编写一些德语 TeX 文档。我的文档中的德语引号"'
或\grqq
和"'
或被\grqq
cmr 字体替换,并且引号附近的 PDF 文件无法复制。警告消息说
字体形状“OT1/TeXGyrePagella(0)/m/n”未定义,第 9 行使用“OT1/cmr/m/n”代替符号“glqq”。
以下是我的最小示例:
% !TEX program = xelatex
% !Mode:: "TeX:UTF-8"
\documentclass[12pt]{article}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\setromanfont{TeXGyrePagella}
\begin{document}
These are German \glqq quotation marks\grqq.
\end{document}
答案1
切勿babel
与 XeLaTeX 一起使用。如需国际化支持,请使用polyglossia
而不是。此外,在这种情况下甚至不需要。您可以使用 ASCII 符号或直接 UTF-8 输入引号:
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Ligatures = TeX]{TeX Gyre Pagella}
\begin{document}
<< >> ,, ``
« » „ “
\end{document}
polyglossia
还具有一些babel
速记支持,以简化从 的过渡babel
。
答案2
更新(2016 年 3 月)
babel
现在支持 XeTeX,因此以下内容可以正常工作:
% !TEX program = xelatex
% !Mode:: "TeX:UTF-8"
\documentclass[12pt,ngerman]{article}
\usepackage{babel}
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\begin{document}
These are German \glqq quotation marks\grqq.
These are German "`quotation marks"'.
\end{document}
原始答案
认为你最好使用 polyglossia 而不是 babel:
% !TEX program = xelatex
% !Mode:: "TeX:UTF-8"
\documentclass[12pt]{article}
\usepackage{polyglossia}
\setmainlanguage[spelling=new,babelshorthands=true]{german}
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\setromanfont{Times New Roman}
\newcommand\glqq{"`}
\newcommand\grqq{"'}
\begin{document}
Thess are German \glqq quotation marks\grqq.
Thess are German "`quotation marks"'.
\end{document}
(我改了字体……)
答案3
使用 babel 时,您应该检查要使用的语言定义文件是否已适应 unicode 引擎——许多非西方脚本并非如此——但对于 (n)german,它可以与 xelatex 配合使用。您没有得到引用,因为 xunicode 没有提供必要的定义。添加它们很容易。例如
\documentclass[12pt]{article}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont{TeX Gyre Pagella}
\DeclareUTFcharacter[\UTFencname]{x201C}{\grqq}
\DeclareUTFcharacter[\UTFencname]{x201E}{\glqq}
\begin{document}
These are German \glqq quotation marks\grqq.
\end{document}
还可以看看包装csquotes
(于 2016 年 3 月编辑,以适应 fontspec 中的新命令和 babel 中的开发。)