如何在 plainTeX 中将文本置于其他单词之上?

如何在 plainTeX 中将文本置于其他单词之上?

我需要在 plainTeX 中将和弦字母放在歌词上方。我唯一能做的就是将所需的和弦字母放在 \hbox 中,然后我使用“\raise 10 pt \hbox{C}”将其向上移动。但它看起来很糟糕,我需要下面的文本是实心的,没有间隙。如果我可以将和弦字母稍微向左移动,以便将其放在我需要的字母的正上方,那就太好了。例如,“... lyrics ly\chord{C}rics lyrics ...”应该保持第二个单词“lyrics”实心,并将和弦字母“C”放在下面单词中字母“y”的正上方。这可能吗?

答案1

使用\halign

\def\chord#1#2{%
  \leavevmode % in case this starts a paragraph
  \vbox{% accommodate the alignment
    \offinterlineskip % disable the standard interline spacing
    \ialign{%
      ##\cr % standard template
      \hidewidth\fiverm #1\hidewidth\cr % the chord should occupy no horizontal space
      \strut#2\cr
    }%
  }%
}

lyrics l\chord{C}{y}rics

l\chord{C}{y}rics lyr\chord{D7}{i}cs

\bye

在此处输入图片描述

答案2

使用\rlap

\def\chord#1{\leavevmode\raise2ex\rlap{\strut\fiverm#1}}

lyrics l\chord{C}{y}rics

l\chord{C}{y}rics lyr\chord{D7}{i}cs

\bye

相关内容