排版音标:Unicode 还是 tipa?

排版音标:Unicode 还是 tipa?

在 TeX.SX 上,有很多类似“如何排版 [某些音标]?”的问题。例如:

在回答这些问题时,经常出现的一个问题是,国际音标 (IPA) 符号是否应该使用

在决定使用哪种方法时,用户应该考虑什么?

这个问题与是否优先使用 \aa 或 å?,但我在这里特别关注的是tipa包,而不是基于 LaTeX 的宏与 Unicode 的更广泛问题。这也与有关 pdfLaTeX 与 XeLaTeX 与 LuaLaTeX 的问题有关,但我再次关注的是tipa,它可以与其中任何一个一起使用。

答案1

Unicode 的优势

在我看来,在 XeLaTeX/LuaLaTeX 中使用 Unicode 字体有很多优点,其中一些优点在上述问题的答案和其他地方提到过,特别是 Alan Munn 对如何在 LaTeX 中使用 IPA 语音字符准备将文本转换为 LaTeX:如何在 TIPA 中转换“喷出口音”?

  • 代码的可读性。毫无疑问,这[ˌɛkspləˈneɪʃən]比更容易阅读(校对)\textipa{[""Ekspl@"neIS@n]}
  • 没有特殊的命令/环境。无需\textipa{...}{\tipaencoding ...}\begin{IPA} ... \end{IPA}
  • 跨应用程序兼容性
    • 复制和粘贴。如果您将数据.tex从其他应用程序(例如 Excel、Toolbox、ELAN、FLEx 等)导入文件,Unicode 输入允许您简单地复制和粘贴,而无需转换为tipa(或其他 LaTeX)宏。如果您想从.tex文件中取出一个示例并将其放入 Word 文档、电子邮件或网页中,复制和粘贴也同样有效。
    • 键盘快捷键。如果你已经使用Unicode IPA 键盘布局(或特定于您所使用的语言的键盘布局),您可以使用在任何其他 Unicode 应用程序中相同的快捷键。请参阅我的答案使用 Charis SIL 访问 IPA 字符有关使用键盘布局进行 Unicode IPA 输入的更多信息。
  • PDF 可用性。当您使用 Unicode 字体时,只有对生成的 PDF 具有访问权限的人才能搜索 IPA 符号,并且他们也可以将其复制并粘贴出文档。对于使用 的 PDF,这种情况偶尔会发生,tipa如在如何在 pdf 中使用真实字母?
  • 字体选择的灵活性。您可以使用任何具有您需要的字符的 Unicode 字体。tipa的选项为您提供了与 Computer Modern、Times 或 Helvetica 相匹配的符号,就是这样。
  • 字体一致性。您可以选择一种字体,其 IPA 符号由其余字体的设计者创建,这样它们将与正文相匹配。tipa与 Computer Modern 非常匹配,但它仅仅近似于 Times 和 Helvetica。
  • OpenType 功能。有几种 Unicode 字体完全覆盖 IPA,并且还具有 OpenType 功能,您可以在 XeLaTeX 或 LuaLaTeX 中使用它们fontspec。例如,Charis SIL 具有用于读写应用的替代字形(<ɑɡ> 代替 <ag> 等)和用于本地化的替代字形(例如,<Ŋ> 和 <ʋ> 的变体字形)。

tipa的优势

至少有两个优点tipa,可能还有第三个优点:

  • 向后兼容。将代码转换为 Unicode 需要大量工作tipa,如果您处理的大部分数据已经经过编码,那么这可能不值得tipa
  • 控制微印刷术。 tipa有命令(手册第 4 部分)允许您手动放置变音符号并对字距等进行一些其他精细调整。一些 Unicode 字体允许变音符号堆叠和正确放置修饰字母,但这在字体之间差异很大。
  • 输入的简易性/速度。人们经常提到这一点tipa,但我个人认为使用tipa快捷方式并不比使用Unicode IPA 键盘布局具有助记符、语义化的按键分配。

结论

该包tipa应被视为在 LaTeX 中使用 IPA 字符的传统方法,就像其他非 Unicode 字体已被淘汰一样(例如,IPAPhon 以及 SIL 和 LaserIPA 字体的非 Unicode 版本)。tipa出于兼容性原因(使用已编码的数据、遵循出版商的样式指南等),在某些情况下可能需要使用tipa它,但一般来说,用户应该强烈考虑将 Unicode 与 XeLaTeX 或 LuaLaTeX 一起使用。

答案2

如果由于某种原因,例如\textturnscripta在您的 LaTeX 文档中,您有 TIPA 命令,但是您使用的是兼容 Unicode 的 TeX 引擎,并且您当前的字体包含所有必要的字形(例如,FreeSerif 字体系列),那么这里有一些对 TIPA(和其他类似的 LaTeX)命令的重新定义,它们会产生相应的 Unicode 字符:

\def\AA{Å}
\def\AE{Æ}
\def\DH{Ð}
\def\O{Ø}
\def\Thorn{Þ}
\def\TH{Þ}
\def\ss{ß}
\def\aa{å}
\def\ae{æ}
\def\dh{ð}
\def\o{ø}
\def\textthorn{þ}
\def\textthornvari{þ}
\def\textthornvarii{þ}
\def\textthornvariii{þ}
\def\textthornvariv{þ}
\def\th{þ}
\def\DJ{Đ}
\def\dj{đ}
\def\textcrd{đ}
\def\textHbar{Ħ}
\def\textcrh{ħ}
\def\texthbar{ħ}
\def\i{ı}
\def\j{ȷ}
\def\IJ{IJ}
\def\ij{ij}
\def\textkra{ĸ}
\def\L{Ł}
\def\textbarl{ł}
\def\l{ł}
\def\NG{Ŋ}
\def\ng{ŋ}
\def\OE{Œ}
\def\oe{œ}
\def\textTbar{Ŧ}
\def\textTstroke{Ŧ}
\def\texttbar{ŧ}
\def\texttstroke{ŧ}
\def\textcrb{ƀ}
\def\textBhook{Ɓ}
\def\textOopen{Ɔ}
\def\textChook{Ƈ}
\def\textchook{ƈ}
\def\texthtc{ƈ}
\def\textDafrican{Ɖ}
\def\textDhook{Ɗ}
\def\textEreversed{Ǝ}
\def\textEopen{Ɛ}
\def\textFhook{Ƒ}
\def\textflorin{ƒ}
\def\textGammaafrican{Ɣ}
\def\texthvlig{ƕ}
\def\hv{ƕ}
\def\textIotaafrican{Ɩ}
\def\textKhook{Ƙ}
\def\textkhook{ƙ}
\def\texthtk{ƙ}
\def\textcrlambda{ƛ}
\def\textNhookleft{Ɲ}
\def\OHORN{Ơ}
\def\ohorn{ơ}
\def\textPhook{Ƥ}
\def\textphook{ƥ}
\def\texthtp{ƥ}
\def\textEsh{Ʃ}
\def\ESH{Ʃ}
\def\textlooptoprevesh{ƪ}
\def\textpalhookbelow{ƫ}
\def\textThook{Ƭ}
\def\textthook{ƭ}
\def\texthtt{ƭ}
\def\textTretroflexhook{Ʈ}
\def\UHORN{Ư}
\def\uhorn{ư}
\def\textVhook{Ʋ}
\def\textYhook{Ƴ}
\def\textyhook{ƴ}
\def\textEzh{Ʒ}
\def\texteturned{ǝ}
\def\textturna{ɐ}
\def\textscripta{ɑ}
\def\textturnscripta{ɒ}
\def\textbhook{ɓ}
\def\texthtb{ɓ}
\def\textoopen{ɔ}
\def\textopeno{ɔ}
\def\textctc{ɕ}
\def\textdtail{ɖ}
\def\textrtaild{ɖ}
\def\textdhook{ɗ}
\def\texthtd{ɗ}
\def\textreve{ɘ}
\def\textschwa{ə}
\def\textrhookschwa{ɚ}
\def\texteopen{ɛ}
\def\textepsilon{ɛ}
\def\textrevepsilon{ɜ}
\def\textrhookrevepsilon{ɝ}
\def\textcloserevepsilon{ɞ}
\def\textbardotlessj{ɟ}
\def\texthtg{ɠ}
\def\textscriptg{ɡ}
\def\textscg{ɢ}
\def\textgammalatinsmall{ɣ}
\def\textgamma{ɣ}
\def\textramshorns{ɤ}
\def\textturnh{ɥ}
\def\texthth{ɦ}
\def\texththeng{ɧ}
\def\textbari{ɨ}
\def\textiotalatin{ɩ}
\def\textiota{ɩ}
\def\textsci{ɪ}
\def\textltilde{ɫ}
\def\textbeltl{ɬ}
\def\textrtaill{ɭ}
\def\textlyoghlig{ɮ}
\def\textturnm{ɯ}
\def\textturnmrleg{ɰ}
\def\textltailm{ɱ}
\def\textltailn{ɲ}
\def\textnhookleft{ɲ}
\def\textrtailn{ɳ}
\def\textscn{ɴ}
\def\textbaro{ɵ}
\def\textscoelig{ɶ}
\def\textcloseomega{ɷ}
\def\textphi{ɸ}
\def\textturnr{ɹ}
\def\textturnlonglegr{ɺ}
\def\textturnrrtail{ɻ}
\def\textlonglegr{ɼ}
\def\textrtailr{ɽ}
\def\textfishhookr{ɾ}
\def\textlhti{ɿ}
\def\textscr{ʀ}
\def\textinvscr{ʁ}
\def\textrtails{ʂ}
\def\textesh{ʃ}
\def\texthtbardotlessj{ʄ}
\def\textraisevibyi{ʅ}
\def\textctesh{ʆ}
\def\textturnt{ʇ}
\def\textrtailt{ʈ}
\def\texttretroflexhook{ʈ}
\def\textbaru{ʉ}
\def\textupsilon{ʊ}
\def\textscriptv{ʋ}
\def\textvhook{ʋ}
\def\textturnv{ʌ}
\def\textturnw{ʍ}
\def\textturny{ʎ}
\def\textscy{ʏ}
\def\textrtailz{ʐ}
\def\textctz{ʑ}
\def\textezh{ʒ}
\def\textyogh{ʒ}
\def\textctyogh{ʓ}
\def\textglotstop{ʔ}
\def\textrevglotstop{ʕ}
\def\textinvglotstop{ʖ}
\def\textstretchc{ʗ}
\def\textbullseye{ʘ}
\def\textscb{ʙ}
\def\textcloseepsilon{ʚ}
\def\texthtscg{ʛ}
\def\textsch{ʜ}
\def\textctj{ʝ}
\def\textturnk{ʞ}
\def\textscl{ʟ}
\def\texthtq{ʠ}
\def\textbarglotstop{ʡ}
\def\textbarrevglotstop{ʢ}
\def\textdzlig{ʣ}
\def\textdyoghlig{ʤ}
\def\textdctzlig{ʥ}
\def\texttslig{ʦ}
\def\textteshlig{ʧ}
\def\texttesh{ʧ}
\def\texttctclig{ʨ}
\def\textprimstress{ˈ}
\def\textlengthmark{ː}

答案3

肯定是 Unicode。唯一的例外是您的发布商不支持它。例如,PDFTeX 无法处理组合 Unicode 字符,只能处理预组合字符。

tipa软件包最后一次更新是在 2004 年。它仅支持 Computer Modern Roman/Sans-Serif/Typewriter、Times 和 Helvetica 字体。它加载 8 位字体编码,因此很难在与非欧洲脚本相同的文档中使用。

您可以使用 Unicode 输入tipa(除了在 PDFTeX 中组合重音符号),方法是使用\DeclareUnicodeCharacter或将 Unicode 字符设置为活动状态newunicodechar。如果您想使用tipa类似命令,现代软件包可能会将它们声明为 check \iffontchar,如果当前字体中有 Unicode 符号,则使用当前字体中的 Unicode 符号,否则,可能返回到 8 位字体。您可以自己编写,但tipa不要这样做,也不inputenc支持 T3。

答案4

我编写了一个 Rust(二进制)程序,将 unicode 转换为 TIPA 命令这里

它基于我收集的一些数据表,虽然有些不完整,但现在让我很满意了。

你可以用 来调用它\write18,这是 Linux 下的一个示例:

\documentclass{article}
\usepackage[tone]{tipa}

\newwrite\tipaout
\newread\tipain

\newcommand\callunitipa[1]{%
    % Mind the setting of triggering LaTeX Workshop
    % Hard to escape chars, should use files instead of args.
    \typeout{Call unitipa with: #1}%
    \immediate\openout\tipaout=unicode-tipa_in.tex%
    \immediate\write\tipaout{#1}%
    \immediate\closeout\tipaout%
    \immediate\write18{unitipa.sh "$(cat unicode-tipa_in.tex)" > unicode-tipa_out.tex}%
    \immediate\write18{unitipa.sh "#1" >> unicode-tipa_tex.log}%
    \immediate\openin\tipain=unicode-tipa_out.tex%
    \immediate\read\tipain to \tipatmp%
    \immediate\closein\tipain%
    \tipatmp\unskip% read will cause a linebreak at the end, use unskip to cancel its effect.
}

\newcommand{\utipa}[1]{\expandafter\textipa{\callunitipa{#1}}}

\begin{document}
\utipa{}
\end{document}

和我一起工作的某人也在将 tipa T3 编码字体迁移到 Unicode 字体(TrueType 等)。仍在等待它完成的那一天。

相关内容