我怎样才能将一些文本放置在行内其他文本的中央?
我想创建与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
,如下面的最小示例所示:
\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
附加功能(如内核检查)。宏只是复制输出。