名前: しっぽ愛好家 日時: 2003-05-02 14:36:36 IPアドレス: 211.4.46.*
>>18480 ルビは,ごく簡単には,垂直ボックスの中にルビ文字列と親文字列を この順に積み重ねれば作成できたわけです. %%% もちろん,ルビ文字列,親文字列の一方が長すぎる場合への対処も %%% 考える必要がありますが.(また,特に文字列が長すぎなくとも, %%% 出力にこだわる余地はあるようです.) ここでは,積み重ねる順序を変更して,垂直ボックスの中で 下線をつける対象,下線(\hrule),下線の下のコメントを この順に重ねればよいでしょう. 単純に定義するなら次のようなところでしょうか. \def\UnderlineWithComment#1#2{% #1: <text>, #2: <comment> \leavevmode%%% 必要があれば,段落を開始します. \vtop{% %%% 幅の測定のために <text>,<comment> をボックスに収めます. \setbox0\hbox{#1}% \setbox2\hbox{\tiny #2}% %%% \dimen0 = ((<text> の幅と <comment> の幅のうちの小さくない方)) \ifdim\wd0<\wd2 \dimen0=\wd2 \else \dimen0=\wd0 \fi \hbox to\dimen0{\hss \unhbox0 \hss}%%% <text> を出力 \kern1pt%%% 下線との間隔 \hrule%%% 下線 \kern1pt%%% 上側の線との間隔 \hbox to\dimen0{\hss \unhbox2 \hss}}}%%% <comment> を出力 (例) \UnderlineWithComment{双対}{そうつい}性 [蛇足] ``手抜き版'' です. \def\UnderlineWithComment#1#2{% \leavevmode \null \ensuremath{\mathop{\underline{\hbox{#1}}}\limits_{\hbox{\tiny#2}}}\null}
この書き込みへの返事: