如何允许溢出和下陷出现在相邻的文本上?

如何允许溢出和下陷出现在相邻的文本上?

我正在使用ConTeXt 中的\overset\underset命令将文本放置在段落内的其他文本之上,例如:

(animal)                (animal)   (animal)
 Bears   like to   eat    fish  and snakes.
                (action)

\overset命令成功将文本放置在上方,但它也会在正文中产生空格,如上所示。我希望正文尽可能有正常间距,例如:

(animal)         (animal)   (animal)
 Bears like to eat fish and rabbits.
            (action)

\oversets仅当两个或\undersets彼此相邻出现且需要比常规文本更多空间时,才应添加额外的间距,例如:

(animal) (animal)   (animal)
 Bears,    fish, and frogs  eat,    play, and swim in the river.
                         (action) (action)  (action)
  • \oversets当使用和\undersets时,如何尽可能地压缩文本周围的间距?

答案1

这是一个简单的 TeX 解决方案(正如 Aditya 提到的,它已经在 ConTeXt 中实现,甚至以更好的、符合数学模式的方式实现)::

\def\clap#1{\hbox to 0pt{\hss #1\hss}}

现在\clap{whatever}设置任何就好像它的宽度为零,以 TeX 遇到的点为水平中心。

\llap(显然,这个宏遵循了和的思想\rlap。)

当然,当出现过度设置等情况时,这无济于事。重叠

编辑:正如 Marco 在评论中指出的那样,这可能是更好的想法:

\def\clap#1{\hbox to 0pt{\hss\strut #1\hss}}

\strut宏使\clap框的高度(和深度)与字体中的“最高/最深”字符一样高(至少在理论上 - 但除非设置非常奇怪,否则这应该可行)。

答案2

最简单的解决方案是使用零带框 \makebox[0pt]{} 围绕您想要的文本,无论是在下方还是上方。例如,

\overset{\makebox[0pt]{(\scriptsize animal)}}{Bears} 

相关内容