tipauni:覆盖 textipa 宏适用于未在 textipa 内写的重音字符

tipauni:覆盖 textipa 宏适用于未在 textipa 内写的重音字符

我想修改包\textipa提供的命令tipauni。例如,假设我总是想在 IPA 字符周围加上方括号:

\let\oldtextipa\textipa
\renewcommand{\textipa}[1]{\oldtextipa{[\textipa{#1}]}}

我意识到这种用法不是一个好主意;我的实际用例是通过\textipa自动切换字体来用单独的字体书写 IPA 符号。这似乎可以帮助我的一些学生记住 IPA 和英语正字法之间的区别,即使符号有重叠。然而,添加字体包会使 MWE 变得不那么简单,所以我在这里避免使用它,只关注问题的根源。

使用 LaTeX 快捷键输入重音字符时,问题就变得明显了:\"u用方括号括起来。Unicode 字符(即直接输入ü)不受影响。\"uü现在产生以下内容,例如:

在此处输入图片描述

tipa有趣的是,使用时不会发生这种情况tipauni(当然,unicode 输出的优势让我更喜欢tipauni)。为什么\textipa影响字符的重新定义没有写在 里面\textipa?有没有办法在不重命名\textipa宏的情况下解决这个问题?如果修复很容易,我想保持原样,因为这样会保持一致并且更容易记住。

梅威瑟:

\documentclass{article}

\usepackage[preservefont]{tipauni}
\let\oldtextipa\textipa
\renewcommand{\textipa}[1]{\oldtextipa{[{#1}]}}

\begin{document}
    \"uü
\end{document}

答案1

无论你是否重新定义,你都会连续得到

\TU-cmd \"\TU\" u

\tipauniumlaut u

\@ifstar{\TipaUniSubUmlaut}{\TipaUniSupUmlaut}u

\TipaUniSupUmlaut u

\textsupumlaut{\textipa{#1}}

现在你可以看到你的重新定义失败的地方,因为\textsupumlaut它被定义为

\DeclareUnicodeAccent{\textsupumlaut}{TU}{"0308}%% ̈

所以你实际上得到的是

[u]^^^^0308

[u]IPA 字体中,重音符号是相对于方括号而不是 来放置的u

我看不出有任何方法可以通过重新定义来获得你想要的东西\textipa

这只是我的观点,但是

[\"u]

很多更容易和更清晰。

相关内容