使用 tipa 在数学模式中使用不同空间时出现问题

使用 tipa 在数学模式中使用不同空间时出现问题

在同一个文档(文章)中,我使用了一些数学软件包(amsmathamssymbmathcompwasysym),它们都运行正常;但是当我将 TIPA 与特殊的 latex 空间(\, \; \! \:)一起使用时,LaTeX 告诉我无法构建 pdf 输出。它给了我类似这样的信息:

LaTeX Warning: Command \! invalid in math mode on input line 45.

有没有办法用 TIPA 在数学模式下创建这种类型的空间?

一个最小的工作示例:

\documentclass[a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tipa}

\begin{document}
$\forall x \in \mathbb{Z}, x=3k+c, c\in [\![0;2]\!]. -1\equiv 2
\;\:[3]$, so $\forall x \in \mathbb{Z}, x=3k+c, c\in [\![-1;1]\!].$\\
\textepsilon
\end{document}

答案1

好的,问题是 TIPA 定义了一些数学模式间距命令。例如,\!可以放在某些辅音前面,给你内爆音。因此

\textipa{\!b}

会给你ɓ。

现在,当您正常加载 TIPA 时,它只会覆盖标准 LaTeX 定义。因此,如果您随后尝试像平常一样\!在数学模式下使用命令,您将收到错误,因为正在使用新的 TIPA 定义,而它们在数学模式下不起作用。

您需要做的是将[safe]选项传递给 TIPA,如手册

最后,还有一个名为“ safe”的选项,用于抑制 TIPA 中一些可能“危险”的命令的定义。

\usepackage[safe]{tipa}

具体来说,通过声明选项可以抑制以下命令safe。每个命令的功能将在后面说明。

  • \s相当于\textsyllabic;可能无害,但对于控制序列名称来说太短了。

  • \*已在纯 TeX 中定义;然而许多人认为它的重新定义无害。

  • \|\:\;\!已经在 LaTeX 中定义;这些重新定义显然是最危险的。但是,即使在“不安全模式”下也准备了补救措施。有一个命令称为,其\Vert含义与\|和 相同,可在“不安全”模式下使用。对于其余三个命令,TIPA 提供了称为 和 的命令\tipamedspace\tipathickspace即使在“不安全模式”下,它们也分别保留、和\tipanegthinspace的含义。\:\;\!

尽管有上述“补救措施”,但有时您可能希望在“不安全”模式下使用上述命令及其原始名称。在这种情况下,可以使用名为的命令\tipasafemode。例如:

输入

\textipa{[\!b] [\:r] [\;B]}\quad{\tipasafemode
  $ a\:a\quad b\;b\quad c\!c\quad\| $}\quad
\textipa{[\!b] [\:r] [\;B] (back again!)}

如本例所示,\tipasafemode必须在组内使用。否则,TIPA 特殊宏的含义就会丢失。

但是,这会删除诸如 之类的 TIPA 快捷键\!b,使它们无法使用。相反,标准 LaTeX 定义会恢复。这要求您使用更长的 TIPA 命令来生成这些符号。因此,您不能再使用\!b来获取 ɓ,而必须使用\texthtb

\documentclass[a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[safe]{tipa}

\begin{document}

$\forall x \in \mathbb{Z}, x = 3k + c, c \in [\![0;2]\!].
-1 \equiv 2 \;\:[3]$, so $\forall x \in \mathbb{Z}, x = 3k + c,
c \in [\![-1;1]\!].$\\
\textepsilon

\begin{IPA}
  \texthtb
\end{IPA}

\end{document}

enter image description here

相反,您可能更愿意正常加载 TIPA 而不使用该safe选项。然后您可以\tipasafemode在任何想要使用 LaTeX 数学模式命令的地方使用该开关,例如\!

\documentclass[a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tipa}

\begin{document}

${\tipasafemode \forall x \in \mathbb{Z}, x = 3k + c, c \in
  [\![0;2]\!]. -1 \equiv 2 \;\:[3]}$, so
${\tipasafemode \forall x \in \mathbb{Z}, x = 3k + c, c \in
  [\![-1;1]\!].}$\\
\textepsilon

\begin{IPA}
  \!b
\end{IPA}

\end{document}

enter image description here

或者如果您确实想要,您可以正常使用 TIPA,但在数学模式下将 、 等\:实例替换为、等。我不会这样做:\;\tipamedspace\tipathickspace

\documentclass[a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tipa}

\begin{document}

$\forall x \in \mathbb{Z}, x = 3k + c, c \in
[\tipanegthinspace[0;2]\tipanegthinspace].  -1 \equiv 2
\tipathickspace\tipamedspace[3]$, so
$\forall x \in \mathbb{Z}, x = 3k + c, c \in
[\tipanegthinspace[-1;1]\tipanegthinspace].$\\
\textepsilon

\begin{IPA}
  \!b
\end{IPA}

\end{document}

enter image description here

相关内容