将文本置于其他文本下方

将文本置于其他文本下方

我怎样才能将一些文本放置在行内其他文本的中央?

我想创建与ruby包中找到的结果类似的结果,但不将文本放在上面,而是将额外的文本放在基线文本下面。在源代码中(参见ruby.sty#2),我想我已经找到了上面#1的代码\ruby{}{}

{\@tempdimc \f@size\p@
\@tempdimc \rubysize\@tempdimc
\sbox\z@{\vrule\@height.7\baselineskip\@depth\z@\@width\z@ #1}
\sbox\@tempboxa{\fontsize{\@tempdimc}{1.2\@tempdimc}\selectfont
    \vrule\@height\z@\@depth.3\baselineskip\@width\z@ #2}
  • 可能ruby.sty已经提供了此功能,但我在文档中找不到任何关于此内容的提及(请参阅ruby.txt)。

我也尝试过这些,但结果有点不同:

  • $\stackrel[below]{above}{middle}$,但我不需要上面的任何文字。

  • $\underbrace{above}_{\hbox{below}}$,但我不需要下支架。

我更希望格式和距离能够复制\ruby{}{}

答案1

使用不同的字体大小时,这可能需要进行一些调整,但就标准文档类而言,这似乎已经足够了article,如下面的最小示例所示:

\ruby 重复顶部/底部文本

\documentclass{article}
\usepackage{ruby}% http://ctan.org/pkg/cjk
\usepackage{lmodern}% http://ctan.org/pkg/lm

\makeatletter
\newcommand{\rubytop}[2]{%
  \@tempdimc \f@size\p@
  \begin{tabular}[b]{@{}c@{}}
    \fontsize{.4\@tempdimc}{.48\@tempdimc}\selectfont%
    \setlength{\normalbaselineskip}{0pt}#1\\[-4.3pt]
    #2
  \end{tabular}%
}
\newcommand{\rubybot}[2]{%
  \@tempdimc \f@size\p@
  \begin{tabular}[t]{@{}c@{}}
    #2\\[-6.7pt]
    \fontsize{.4\@tempdimc}{.48\@tempdimc}\selectfont%
    \setlength{\normalbaselineskip}{0pt}#1
  \end{tabular}%
}
\makeatother

\begin{document}
one \ruby{one}{two} two \ruby{two}{one} one \rubytop{one}{two} two \rubybot{two}{one} one
\end{document}

提供的两个新命令是\rubytop{<top>}{<bot>}\rubybot{<bot>}{<top>}。前者重复\ruby{<bot>}{<top>}但使用tabular,而后者则逆转了该过程。

ruby\rubytop如果使用和 则不需要\rubybot,它也没有其他花哨的\ruby附加功能(如内核检查)。宏只是复制输出。

相关内容