我正在尝试编写一个文档,其中包含许多不同脚本的字符(为此我使用 fontspec 并使用 xelatex 进行渲染)和 IPA 符号(为此我使用 TIPA)。通常,这可以正常工作,但是,我想对我的 IPA 符号使用 slshape。如果我听从手册的建议并使用
\textipa{\slshape f@"nEtIks}
或者
\textipa{\textsl{f@"nEtIks}}
加载 fontspec 后失败。文档正确呈现,但 IPA 符号显示为直立。如果我删除 fontspec,则此操作可正常工作,但 IPA 符号会倾斜。我尝试让 fontspec 使用 tipasl12,但找不到允许 fontspec 使用该字体的方法。无论我如何命名,fontspec 都找不到该字体。
这是我所拥有的 LaTeX,它可以生成正确的 IPA 符号,但它们却是直立的:
\documentclass[12pt,openany]{book}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{fontspec,xltxtra,xunicode}
\newfontfamily{\AR}[Script=Arabic]{Scheherazade}
\usepackage{tipa}
\begin{document}
\textipa{\slshape f@"nEtIks}
\end{document}
但是,下面的方法可以完美运行,但是 - 显然 - 不允许我使用阿拉伯字符:
\documentclass[12pt,openany]{book}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{amsmath}
\usepackage{amssymb}
%\usepackage{fontspec,xltxtra,xunicode}
%\newfontfamily{\AR}[Script=Arabic]{Scheherazade}
\usepackage{tipa}
\begin{document}
\textipa{\slshape f@"nEtIks}
\end{document}
答案1
阿拉伯字体不是因素。问题在于fontspec
重新定义\textipa
时假设拉丁现代字体具有 IPA 字形,而 Unicode 应该调用这些字形。
解决方案:恢复 IPA 的 Computer Modern 字体。
\documentclass[12pt,openany]{book}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tipa}
\usepackage{fontspec}
\newfontfamily{\AR}[Script=Arabic]{Scheherazade}
\begin{document}
\renewcommand\textipa[1]{{\fontfamily{cmr}\tipaencoding #1}}
\textipa{\slshape f@"nEtIks}
\end{document}
更完整的版本,还考虑到打字机类型的需要:
\documentclass[12pt,openany]{book}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tipa}
\usepackage{fontspec}
\newfontfamily{\AR}[Script=Arabic]{Scheherazade}
\AtBeginDocument{
\renewcommand\textipa[2][r]{{\fontfamily{cm#1}\tipaencoding #2}}
}
\renewenvironment{IPA}[1][r]
{\fontfamily{cm#1}\tipaencoding}
{}
\begin{document}
\textipa{\slshape f@"nEtIks}
\textipa[tt]{f@"nEtIks}
\begin{IPA}f@"nEtIks\end{IPA}
\begin{IPA}[tt]f@"nEtIks\end{IPA}
\begin{IPA}\slshape f@"nEtIks\end{IPA}
\end{document}