![使用 IPA 和希腊语编写的西班牙语文档,在 PDFLaTeX 和 XeLaTeX 中失败](https://linux22.com/image/279991/%E4%BD%BF%E7%94%A8%20IPA%20%E5%92%8C%E5%B8%8C%E8%85%8A%E8%AF%AD%E7%BC%96%E5%86%99%E7%9A%84%E8%A5%BF%E7%8F%AD%E7%89%99%E8%AF%AD%E6%96%87%E6%A1%A3%EF%BC%8C%E5%9C%A8%20PDFLaTeX%20%E5%92%8C%20XeLaTeX%20%E4%B8%AD%E5%A4%B1%E8%B4%A5.png)
我将一些 HTML 格式的文档转换为 LaTeX 格式,以便打印效果更好。虽然这些文档的主要语言是西班牙语(还有一些是英语),但也有其他语言的片段,包括不使用 Latin-1 的语言,例如希腊语和 IPA 扩展。
这是我正在做的一个最小工作示例。
\documentclass[12pt]{book}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
\Large
El término democracia viene del griego \textit{δημοκρατία}
(pronunciado \textsf{/ðimokɾatía/}) y que significa gobierno
del pueblo.
\end{document}
该文档以UTF-8正确编码(我已经使用低级工具检查过)。
当尝试使用进行编译时,pdflatex
我针对每个非 latin-1 字符收到以下错误。
! Package inputenc Error: Unicode char \u8:δ not set up for use with LaTeX.
事实上,这些字形并没有出现在文档中:
据称xelatex
应该可以纠正这个问题,因为它据称是支持 Unicode 的,但是,使用相同的代码我得到了以下错误:
! Package inputenc Error: Unicode char \u8:érm not set up for use with LaTeX.
! Package inputenc Error: Unicode char \u8:ðimo not set up for use with LaTeX.
! Package inputenc Error: Unicode char \u8:ía/ not set up for use with LaTeX.
(它不会报告希腊语或 IPA 字符中的错误,只会报告 Latin-1 扩展字符中的错误)
这些报告的字符组和希腊字符都没有出现在生成的文档中:
我已经将xelatex
错误归咎于inputenc
包。如果我注释掉该包,文档就可以顺利编译( 也是如此lualatex
)。 仍然希腊文和 IPA 字符不会出现。
(当然,如果没有inputenc
pdflatex 编译,虽然没有报告任何错误,但表现也不太好,我推测它将每个字节映射到 T1 编码):
所以,实际上有两个问题:
如何使用
pdflatex
和正确地让希腊语和 IPA(以及可能的其他非拉丁字符)出现在我的文档机器人中(xe/lua)latex
?我怎样才能屏蔽 ,
inputenc
以便它可以加载pdflatex
,但不加载(xe/lua)latex
?
答案1
您必须教 LaTeX 如何切换到希腊语和 IPA。此外,Unicode 到 IPA 的翻译并不完整,尤其是 ɾ(U+027E 带有鱼钩的拉丁小写字母 R)默认情况下不可用。
greek
通过加载模块解决了使用希腊语的问题babel
;使用该包支持 IPA tipa
;可以使用添加缺失的翻译newunicodechar
。
\documentclass[12pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[greek,spanish]{babel}
\usepackage{tipa}
\usepackage{newunicodechar}
\newunicodechar{ɾ}{\textfishhookr}
\begin{document}
El término democracia viene del griego
\textit{\foreignlanguage{greek}{δημοκρατία}}
(pronunciado \textsf{\textipa{/ðimokɾatía/}})
y que significa gobierno del pueblo.
\end{document}
如果您想要一个可以同时使用和编译的文档pdflatex
,则xelatex
应该为构造定义命令,并根据所使用的引擎提供不同的定义。这里有一种方法。
\documentclass[12pt]{book}
\usepackage{ifxetex}
\ifxetex
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setsansfont[Ligatures=TeX]{Linux Biolinum O}
\else
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tipa}
\usepackage{newunicodechar}
\newunicodechar{ɾ}{\textfishhookr}
\fi
\usepackage[greek,spanish]{babel}
\newcommand{\GR}[1]{\foreignlanguage{greek}{#1}}
\ifxetex
\newcommand{\xIPA}[1]{\mbox{\textsf{/#1/}}}
\else
\newcommand{\xIPA}[1]{\textsf{\textipa{/#1/}}}
\fi
\begin{document}
El término democracia viene del griego
\textit{\GR{δημοκρατία}}
(pronunciado \xIPA{ðimokɾatía})
y que significa gobierno del pueblo.
\end{document}