名前: トノ 日時: 2003-01-23 01:51:50 IPアドレス: 61.124.16.*
>>15506 もとにしようとしておられる \MARU の中に出てくる \ooalign という コマンドは、カラム数が 1 で、行送りが 0pt になっている tabular 環境のようなものだとイメージしていただければいいでしょう。 引数中の \crcr というのが tabular 環境における \\ に相当します。 つまり \maru コマンドは 2 行 1 列の表になっていて、 その 2 行が重なって出力されるようになっています。 表の 1 行目になる部分は \MARU の引数を、\hfil で挟むことによって センタリングしています。 2 行目にあたる \raise.167ex\hbox{...} というのは、\raisebox{.167ex}{...} と いうのとほぼ同じで、ボックスを少し上に上げて出力しています。 ボックスの中身として \mathhexbox20D というのがありますが、 早い話、これは数式中で \bigcirc としたのと同じ記号が 出力されます。私も、\mathhexbox というのがどういう状況で使うべき (あるいは使うといい)ものなのか、理解していませんが、 \ooalign で重ねる記号・文字の指定の仕方としては、別に \mathhexbox を使わずに普通に記述しても構いません。 結局、\mathhexbox20D の部分を適当な記号に変え、\raise で 持ち上げる量を適宜調整すれば、引数をどんな記号とでも重ねることが 出来るようになります。 ※ LaTeX の標準のコマンドの中にも、\ooalign を使った 重ね打ちによる記号がいくつかあります。OT1 エンコーディングに おける \textregistered 等々。 悩ましいのは、三角形をどこから持ってくるかということと、中身が 三角形の中に収まるように文字サイズや出力位置をどう調整するかだと 思います。 私が以前にマクロを作ろうとした時は、三角形としては、欧文 LaTeX で 通常用意されている記号類の中には、amssymb まで考慮に入れても 使えそうなものは見つけられず、仕方なく和文字の「△」を使いました。 そのままのサイズでは囲みの記号としては小さすぎるので、これを \hbox の 引数中で \large か \Large を付けて指定し、中身の方は、逆に小さくして サイズ調整したように思います。また、縦方向の位置調整としては、 三角形を大きめにしている分、少し下げてやった(\raise に負の 長さを与えてやれば出来ます)ように思います。 ただし、\large などでサイズ調整しているので、脚注中など、 カレントの文字サイズが \normalfont でない場所で使ったりすると、 周りの文字とのバランスは取れませんし、△の実際の大きさや形状は、 和文フォントによってかなり違いがありますので、出力時のフォントを 決めつけられない状況では調整が難しいです。また、三角形を少々 大きくしても、きれいに囲まれるようにするには、中身をかなり 小さくする必要があり、あまり見栄えのいいものにはなりませんでした。 ※ 私の場合、数字ではなく漢字を囲もうとしたので、余計に苦しかった。 そんなわけで、Nagato さんの最初の書込みのあと、どなたかから いい方法が提示されないかと期待してみていたのですが……
この書き込みへの返事: