Edited at

$\left(\hat{ ... }\right)$ のカッコが大きくて気持ち悪い

More than 5 years have passed since last update.

TeX で $\left( ... \right)$ と書くと、中に書いた数式の大きさに応じて、自動的に大きいカッコが使われます。中に積分や分数のような「大きな式」を書くときはその方が見やすくなるので、基本的にカッコを使うときは \left,\right を使うべきです。

一方、\hat{x} は x の上にハット ^ を載せる命令です。

これらを組み合わせて使うと、(少なくとも個人的には)ちょっと気持ち悪い感じになります(下の図参照)。

\[

f
\left(\hat{X}\right) {\lVert v \rVert}_{P\left(\hat{X}\right)}
\]

2014-01-07-224551_1024x768_scrot-bigparen.png

これは、ハットをのせたことで \hat{X} のボックスがその分大きくなったためです。実際、そのおかげで分数なども適切な位置に表示できるのですが、個人的にはこのようにカッコの中の場合はハットなしの文字と同じ高さになって欲しいです。

そこで、ハットなしの場合と同じ高さでハット付き文字を作るマクロを作りました(20140214追記: コメント欄にて以下のマクロの問題点をご指摘いただきましたので,そちらで提示されている改良案を使用することをオススメします)。


Hat.tex

%% 縦に大きくならないハット付き文字を作る。

%%%% \hbox to 0pt : 幅 0pt のボックスを作る。
%%%% \phantom : その文字列の大きさで何も表示されないボックスを作る。
%%%% \raisebox : ボックスの位置・サイズを変更する。
%%%% \mathchoice : 数式モードに応じて条件分岐する。
\def\Hat#1{{\fboxsep0pt\mathchoice
{\hbox to 0pt{\phantom{$\displaystyle #1$} }\raisebox{0ex}[0pt][0pt]{$\displaystyle\hat{#1}$}}
{\hbox to 0pt{\phantom{$\textstyle #1$} }\raisebox{0ex}[0pt][0pt]{$\textstyle\hat{#1}$}}
{\hbox to 0pt{\phantom{$\scriptstyle #1$} }\raisebox{0ex}[0pt][0pt]{$\scriptstyle\hat{#1}$}}
{\hbox to 0pt{\phantom{$\scriptscriptstyle #1$}}\raisebox{0ex}[0pt][0pt]{$\scriptscriptstyle\hat{#1}$}}
}}

\[

f
\left(\Hat{X}\right) {\lVert v \rVert}_{P\left(\Hat{X}\right)}
\]

2014-01-07-230108_1024x768_scrot-properparen.png

もちろん、ボックスの高さが変わらないということを理解せずに分数の分母にこのマクロを放り込むような使い方をするとそれはまた気持ち悪いことになります。適材適所に使ってください。


参考文献