点 i 上方的变音符号(i 带有 title)

点 i 上方的变音符号(i 带有 title)

据说,为了在字母“i”上放置重音符号,应该\i先使用 删除 点。(当然,可能需要删除 点,这只是惯例问题。为了在拉丁语中表示元音长度,人们在带或不带 点的“i”上放置一个长音符号;也就是说,我遇到过这两种做法。)

然而,奇怪的是,重音命令\'、、、和似乎会自动删除标题:\`^\"\.

带或不带标题的 i 上方重音符号

\documentclass{article}


\begin{document}

\verb|\ACCENT{i}|:\hphantom{\texttt{A}}\quad
  \'{i} \`{i} \^{i} \"{i} \.{i} \~{i} \={i} \H{i} \r{i} \v{i} \u{i}

\verb|\ACCENT{\i}|:\quad
  \'{\i} \`{\i} \^{\i} \"{\i} \.{\i} \~{\i} \={\i} \H{\i} \r{\i} \v{\i} \u{\i}

\end{document}

1. 自从什么时候开始 (La)TeX 中的重音命令会从这 5 种情况下的字母“i”中删除标题?(我是否遗漏了什么特殊情况?)

2. 我该如何避免这种情况?也就是说,我希望重音符号位于字母 i 上方識別碼。

有趣的是,标题中的字母“j”保留了下来:

带或不带标题的 j 上方重音符号

答案1

在输出编码的定义文件中,你可以找到用预组合的重音字符替换的定义组合;例如,t1enc.def我们发现

\DeclareTextComposite{\.}{T1}{i}{`\i}
\DeclareTextComposite{\.}{T1}{\i}{`\i}
\DeclareTextComposite{\`}{T1}{i}{236}
\DeclareTextComposite{\`}{T1}{\i}{236}
\DeclareTextComposite{\'}{T1}{i}{237}
\DeclareTextComposite{\'}{T1}{\i}{237}
\DeclareTextComposite{\^}{T1}{i}{238}
\DeclareTextComposite{\^}{T1}{\i}{238}
\DeclareTextComposite{\"}{T1}{i}{239}
\DeclareTextComposite{\"}{T1}{\i}{239}

以便

\.i \`i \'i \^i \"i

完全等同于

\.{\i} \`{\i} \'{\i} \^{\i} \"{\i}

这是 中的相应代码ot1enc.def,其中重音符号上方的点与预制字形相对应(当然是正常的带点的“i”):

\DeclareTextComposite{\.}{OT1}{i}{`\i}
\DeclareTextComposite{\.}{OT1}{\i}{`\i}
\DeclareTextCompositeCommand{\`}{OT1}{i}{\@tabacckludge`\i}
\DeclareTextCompositeCommand{\'}{OT1}{i}{\@tabacckludge'\i}
\DeclareTextCompositeCommand{\^}{OT1}{i}{\^\i}
\DeclareTextCompositeCommand{\"}{OT1}{i}{\"\i}

请注意,这些预定义组合t1enc.def与 T1 编码字体中可用的预组合重音字母完全对应。对于其他重音,组合尚未定义,因此需要\i按顺序排列字母,以消除点。

但是,没有人阻止你定义自己的复合材料:

\documentclass{article}

\DeclareTextCompositeCommand{\~}{OT1}{i}{\~\i}
\DeclareTextCompositeCommand{\=}{OT1}{i}{\=\i}
\DeclareTextCompositeCommand{\H}{OT1}{i}{\H\i}
\DeclareTextCompositeCommand{\r}{OT1}{i}{\r\i}
\DeclareTextCompositeCommand{\v}{OT1}{i}{\v\i}
\DeclareTextCompositeCommand{\u}{OT1}{i}{\u\i}


\begin{document}

\verb|\ACCENT{i}|:\hphantom{\texttt{A}}\quad
  \'{i} \`{i} \^{i} \"{i} \.{i} \~{i} \={i} \H{i} \r{i} \v{i} \u{i}

\verb|\ACCENT{\i}|:\quad
  \'{\i} \`{\i} \^{\i} \"{\i} \.{\i} \~{\i} \={\i} \H{\i} \r{\i} \v{\i} \u{\i}

\end{document}

在此处输入图片描述

为什么只定义了一些涉及“i”的组合,而不是所有组合?因为那些组合是最常见的,因为它们实际上对应于编码中的字形,而不常见的组合会浪费宝贵的内存(请记住,当 LaTeX2e 发布时,计算机与当前的机器有很大不同)。


如何“取消定义”这些带有“i”的组合?必须知道\DeclareTextCompositeCommand{\"}{OT1}{i}{\"\i}定义宏

\\OT1\"-i

扩展为\"\i,同时\DeclareTextComposite{\.}{OT1}{i}{`\i}定义

\\OT1\.-i

扩展为\char`\i(即“打印 i”)。LaTeX 在尝试重音时会测试此宏是否存在。请注意这个奇特的名称,其中第一个反斜杠表示转义字符,而内部的反斜杠只是字符。您可以定义一个函数来取消定义要排除的组合:

\documentclass{article}

\newcommand{\UndeclareTextComposite}[3]{%
  \expandafter\let\csname\expandafter\string\csname #2\endcsname\string#1-\string#3\endcsname\relax
}
\UndeclareTextComposite{\'}{OT1}{i}
\UndeclareTextComposite{\`}{OT1}{i}
\UndeclareTextComposite{\^}{OT1}{i}
\UndeclareTextComposite{\"}{OT1}{i}
\UndeclareTextComposite{\.}{OT1}{i}

\begin{document}

\verb|\ACCENT{i}|:\hphantom{\texttt{A}}\quad
  \'{i} \`{i} \^{i} \"{i} \.{i} \~{i} \={i} \H{i} \r{i} \v{i} \u{i}

\verb|\ACCENT{\i}|:\quad
  \'{\i} \`{\i} \^{\i} \"{\i} \.{\i} \~{\i} \={\i} \H{\i} \r{\i} \v{\i} \u{\i}

\end{document}

在此处输入图片描述


关于“这些组合从什么时候开始定义的”这个问题,我在 LaTeX 源代码中找不到任何内容,所以我猜它们从 LaTeX2e 开始就存在了。我记得与 Claudio Beccari 的一次谈话中,他声称坚持要求 LaTeX 团队加入这些组合;这一添加可能发生在 LaTeX2e 发布之前,当时字体编码业务正在开发中。


最后,请注意 BibTeX 可以同样接受{\×i}{\×\i}(其中表示重音命令之一\., \`, \', \^, \")。(改编自在其他地方评论

答案2

我无法回答您的第一个问题,但如果您确实需要这些变音符号组合,您可以通过以下tipa包获取它们:

\documentclass{article}
\usepackage{tipa}
\usepackage{times}

\begin{document}

\huge
\'{\.{i}}
\`{\.{i}}
\textcircumdot{\i}
\"{\.{i}}
\.{\.{\i}}

\end{document}

在此处输入图片描述

但是,我想说这是一个特性而不是一个错误,因为它们没有常规用途(据我所知)。

答案3

问题是这些字符如何使用。我不知道有什么语言使用\"i三个点。但是,在数学模式下,您可以设置重音符号:

$\dot{\textrm{i}} \grave{\textrm{i}} \check{\textrm{i}} \breve{\textrm{i}}$ \ldots 

相关内容