我想修改包\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]
是很多更容易和更清晰。