高さと幅を指定したboxを使いたい!

2021-09-04

実現したかった理由

とあるレポートの作成中、こんなことになった。

ソースは以下(画像のは記事用に\LARGEつけて大きくしてます)

\fbox{1} \fbox{2} \fbox{3} \fbox{4} \fbox{5} \fbox{6} \fbox{7} \fbox{8} \fbox{9} \fbox{0} \fbox{.} \fbox{+} \fbox{-} \fbox{×} \fbox{÷} \fbox{=} \fbox{C}

\fbox{}を用いて各文字を囲もうとしたのだが、文字によってボックスのサイズが異なっており見苦しくなっている。

これは吐き気がするので、fboxの高さを指定しましょう。

…………そんなオプションないやんけ

実現したもの

↓こんなの

ちょっと文字が下寄りになってますが……

やり方

空白のboxの作り方の応用になります。

使うのマクロは以下の2つ。

  • \framebox[横幅]{出力したい文字列}: 横幅を指定できる。
  • \rule{横幅}{高さ}: 黒塗りの四角形を出力する。

この2つを組み合せて、適当な横幅と高さを入れて……

\framebox[1.2em]{\rule{0pt}{1.6ex}出力したい文字列}

という感じになりました。

横幅と高さはお好みで変えてくだしあ

マクロ化

地味に長いのでマクロ化しておくと使いやすいですね。

\newcommand{\mybox}[1]{\framebox[1.2em]{\rule{0pt}{1.6ex}#1}}

myboxのところはお好みのマクロ名にしてください

使うときは以下のように

\newcommand{\mybox}[1]{\framebox[1.2em]{\rule{0pt}{1.6ex}#1}}
\mybox{1} \mybox{2} \mybox{3} \mybox{4} \mybox{5} \mybox{6} \mybox{7} \mybox{8} \mybox{9} \mybox{0} \mybox{.} \mybox{+} \mybox{-} \mybox{×} \mybox{÷} \mybox{=} \mybox{C}

余談

今回用いた\framebox{}マクロですが、実は高さも指定できます。

指定方法は以下の通り。

\framebox(横幅,高さ)[位置]{出力したい文字列}

※位置の指定は、{h:上寄せ, b: 下寄せ, l: 左寄せ, r: 右寄せ, c: 中央寄せ}。

では何故これを使わなかったのか、それは出力したい文字列にピリオドを入れてみると分かります。

枠線と文字の間にパディングがないのです。

つまり、下寄せにするとピリオドが枠線と重なります。最悪

スポンサーリンク