絶対値記号の高さの調整について

絶対値記号の高さの調整について

- 住田 英優 の投稿
返信数: 9
個人的にテキストを制作していた際に,絶対値記号(|a|と言った具合)の高さの調整について,TeXの本(LaTeX2e美文書作成入門)やインターネットで調べた範囲では解決できない問題が出てきましたので皆さんのお力をお借りしたいと思いました。
【環境】
・MacBook Air (13-inch, Early 2015)
・Mac OS Big Sur ver-11.6
・編集:TeXshop
・MacTeX2020
【問題点】
添付ファイルの画像の下が数式モードでコンパイルしたもので,コマンドは

$|\bekutoru{a}|$ $\Bigl| \bekutoru{a} \Bigr|$ $\left|\bekutoru{a} \right|$


です。

(※注意

コマンド\bekutoruは自作のもので,\newcommand{\bekutoru}[1]{\overrightarrow{\mathstrut#1}}

で定義されます。)


添付ファイルの画像の上のものの下線を引いたものが私が作りたい理想のもので,数式モード内にtikzで棒を描くことも考えましたが,長さの可変性を考えるとあまり現実的でないかなと考えました。


拙い文章で申し訳ありませんがよろしくお願い致します。

添付 IMG_4362.JPG
住田 英優 への返信

Re: 絶対値記号の高さの調整について

- 伊藤 直人 の投稿
以下の方法でいかがでしょうか。
添付 添付.jpg
伊藤 直人 への返信

Re: 絶対値記号の高さの調整について

- 住田 英優 の投稿
伊藤様,ご返信ありがとうございます。
今最初の自分の投稿を見て気づいてしまったのですが,どう異なるのかを書き忘れてしまいました。申し訳ありません。

今の所の問題点が添付ファイルの画像の下のものの右側(伊藤様のご返信の最後にあるのと似た形)の記法で,"a"の文字の下の方が間延びしているという点です。
詳しい点まで書けておらず,申し訳ありませんでした。
数式モード内での括弧類の大きさはノーマルから順に,blg,Big...と大きくなる様ですが,この big(ご返信中の4行目のもの)とBig(ご返信中の6行目のもの)との間のサイズに調整する方法をご存知でしたらご教示いただけると幸いです。
添付 スクリーンショット_2021-12-20_15.27.53.jpg
住田 英優 への返信

Re: 絶対値記号の高さの調整について

- しっぽ 愛好家 の投稿
次のサンプルのようなことをお考えですか?
\documentclass{jarticle}
\makeatletter
\newbox\@norm@body
\def\norm{%
   \@norm@save@counters
   \mathpalette\@norm}
\def\@norm#1#2{%
   \hbox{\m@th \@norm@restore@counters
      \setbox\@norm@body\hbox{$#1#2$}%%% 絶対値記号の中身を保存
      \dimen@ii\dp\@norm@body%%%         中身の底の位置を保存
      \setbox\@norm@body\hbox{$\vcenter{\box\@norm@body}$}%
      %%% ↑中身の天地中央の位置が「数式の軸」のところになるよう置き直す
      \advance\dimen@ii-\dp\@norm@body%%% 置き直した際の中身の移動量を計算
      \lower\dimen@ii\hbox{$\left|\box\@norm@body\right|$}}}
      %%% ↑絶対値記号を付けた後,上下方向について元の位置に置き直す
\let\@norm@restore@counters\relax
\def\@norm@save@counters{%
   \def\@elt##1{\noexpand\@nameuse{c@##1}\number\@nameuse{c@##1}\relax}%
   \edef\@norm@restore@counters{\cl@@ckpt}}
\makeatother

\begin{document}

$\overrightarrow{a}$,
$|\overrightarrow{a}|$, 
$\left|\overrightarrow{a}\right|$, and
$\norm{\overrightarrow{a}}$

$\overrightarrow{a\mathstrut}$,
$|\overrightarrow{a\mathstrut}|$, 
$\left|\overrightarrow{a\mathstrut}\right|$, and
$\norm{\overrightarrow{a\mathstrut}}$


次のようなものにも適用可
\[
  \frac{\displaystyle \sum_{k=1}^n a_k}{n}\qquad
  \left|\frac{\displaystyle \sum_{k=1}^n a_k}{n}\right|\qquad
  \norm{\frac{\displaystyle \sum_{k=1}^n a_k}{n}}
\]

\end{document}
しっぽ 愛好家 への返信

Re: 絶対値記号の高さの調整について

- 住田 英優 の投稿
しっぽ 愛好家 様,ご返信ありがとうございます。
もう一人ご返信をいただいた伊藤様への返信でも述べておりますが,最初の投稿の時点で一番重要な「理想と現実の相違点」を書き忘れておりました。申し訳ありません。
その相違点は「添付ファイルの画像の下のものの右側の記法で,"a"の文字の下の方が間延びしている」という点です。
どうやら本を読む限りでは絶対値(括弧類)の大きさはbig(添付画像左側),Big(添付画像右側)...の順で大きくなるようで,この大きさの調整に悩んでいる状況です。
ですので,大変失礼ではありますが,絶対値記号(括弧類)のbigとBigの間の大きさを取る・自由に調整すると言った方法をご存知でしたらご教示いただけると幸いです。
住田 英優 への返信

Re: 絶対値記号の高さの調整について

- 北見 けん の投稿
しっぽ 愛好家さんのものは、 住田さんの希望の通り
下にはみ出さないようになっていませんか?

\norm というのがそのマクロで、他の標準的な書き方をしたものと並べて比較してあるようです。
サンプルの本文部分のソースとよく見比べてみるとわかると思います。

\left と \right を使ったもののように、中身に合わせて大きさも変わりますし。
住田 英優 への返信

Re: 絶対値記号の高さの調整について

- 住田 英優 の投稿
2021/12/20(mon)20:42現在,悩んでいた問題が無事解決しました。
ご返信をいただいた皆様,最初の投稿に本旨を書き忘れるという,質問者としての自覚に欠けるミスをしてしまいました。重ねてお詫びと御礼を申し上げます。

結局,数式モード内にでベースラインを少し下げる(デフォルトフォントのcmrでは2.5pt下げる)方法で解決しました。

比較用のソースコードとコンパイル結果の画像は以下の通りです。
$\left| \bekutoru{a} \right|$
$|\bekutoru{a}|$

$|\raisebox{-2.5pt}[7.5pt][0pt]{\bekutoru{a}}|$

(一番下,画像の一番右が理想だったもの。\bekutoruの定義は最初の投稿の通りです。)


ご返信をいただいた皆様,結局考えれば自分で解決できた様なことを投稿し,皆様の貴重なお時間を割いていただく結果となったことを大変申し訳なく思います。

情報が十分でないかもしれない文章から解決策を提示して下さり,ありがとうございました。


またお世話になることがあると思いますので,その時はどうぞよろしくお願いいたします。

添付 スクリーンショット_2021-12-20_20.47.04.png
住田 英優 への返信

Re: 絶対値記号の高さの調整について

- 北見 けん の投稿
あれれ。別枝に書いているうちに、別案で解決とのこと。
でも、中身を下げてしまうと、単独で使うのでなく数式の一部として使うときには周囲のものとベースラインが揃わなくなってまずいのじゃないかと思います。

しっぽ 愛好家さんのものも中身を上下に移動させているのですが、まず数式の「中心軸」に上下中央揃えにしてからちょうどいい大きさの絶対値記号を配置してから、絶対値記号ごと元のベースラインに戻すということをやっているのだと思います。
北見 けん への返信

Re: 絶対値記号の高さの調整について

- 住田 英優 の投稿
北見 けん 様,ご返信ありがとうございます。
そして私からの返信が大変遅くなりましたことをお詫び申し上げます。

ご返信にあります様に,解決策のままではベースラインの不揃いが起きていました。肝心なことを忘れていました。
ご提案にあります通りに実行してみると見栄えがさらに良くなりました。
ありがとうございます。

またお世話になることがあるかもしれませんが,その時はよろしくお願いいたします。
住田 英優 への返信

Re: 絶対値記号の高さの調整について

- 北見 けん の投稿
続報ありがとうございます。

ひとつ気がかりなことがありましたので、その点だけ。

> ご提案にあります通りに実行してみると見栄えがさらに良く

というのは、しっぽ 愛好家さんの \norm をそのまま使ったのではなくて、しっぽ 愛好家さんの \norm で使われている考え方を私が説明したのにならって、ご自身で上下動の操作を行ったということでしょうか?

おそらくその場合、その上下の移動量は 2.5pt のように具体的な数値を決め打ちしたということかと思います。

これに対して、しっぽ 愛好家さんの \norm のほうだと、この上下の移動量が中身の大きさに合わせて自動で設定されるので、手動設定するよりも良いのではないかと思います。