• 検索結果がありません。

第 9 章 L A TEX の応用 151

9.9 箱の操作

まずは

L

A

TEX

で用意されている箱について説明します.これらは

ltboxes.dtx

で定義 されています.

L

A

TEX

における箱というのは文章や段落,数式や図表などの要素を格納す る領域のようなものです.

L

A

TEX

の箱には高さと幅と深さの

3

種類の長さを持っていま す.さらに箱のどの点を基準にするかという基準点という座標も持ち合わせています.

9.9.1 枠のない箱

L

A

TEX

ではなんとも簡単に複数の要素を一つの箱に収めることができます.

\makebox[

h幅i

][

h位置i

]{

h要素i

}

\makebox

では箱の幅と箱の中の要素の位置を指定できます.箱の幅よりも要素の幅が狭

いときに箱の左側に配置

‘l’

,中央に配置する

‘c’

,右側に配置する

‘r’

,最後に要素を均 一に配置する

‘s’

の四つを使うことができます.

\makebox[3zw][l]{ほげ}

\makebox[3zw][c]{げほ}

\makebox[5zw][r]{あれ}

\makebox[5zw][s]{G o o d !}です.

ほげ と げほ と あれとG o o d !です.

要素の幅分の箱を作りたければ

\mbox

を使います.

\mbox{

h要素i

}

引数を省略すると要素分の幅を確保し

\makebox

を使うよりも効率が良いです.

\hspace*{\fill} 単なる予想ですが,この箱の 中では恐らく\mbox{改行が起こりません.}

単なる予想ですが,この箱の中では恐らく 改行が起こりません.

9.9.2 枠のある箱

複数の要素を一つの塊として扱うようにするのが

L

A

TEX

における箱の役割のようなも のです.箱には枠を付けることもできます.

\framebox[

h幅i

][

h位置i

]{

h要素i

}

\framebox

\makebox

とほぼ同じですが罫線の太さ

\fboxrule

と罫線と要素の間

\fboxsep

の二つの長さを設定できます.

\fboxrule

は罫線の太さを,

\fboxsep

は枠 と要素との距離を長さで指定します.

\framebox[3zw][l]{ほげ}

{\fboxrule=3pt\framebox[3zw][c]{げほ}}

\framebox[5zw][r]{あれ}

\framebox[5zw][s]{G o o d !}です.

ほげ と げほ と あれ とG o o d !です.

好き好き

L

A

TEX 2

ε初級編

9.9

箱の操作

9

\makebox

と同じように引数を省略すると要素分の幅を確保する

\fbox

が使えます.

\fbox{

h要素i

}

{\fboxsep=0pt\fbox{ぴったりだね}}.でも

{\fboxrule=.8pt\fbox{ちょっと太い}} ぴったりだね.でも ちょっと太い

9.9.3 広範囲な箱

指定した箱の大きさで段落を組む

\parbox

命令もあります.標準では字下げがされま せんので必要があれば

\parindent

に長さを代入してください.

\parbox[

h位置i

][

h高さi

][

h要素の位置i

]{

hi

}{

h文字列i

}

\parbox

で作成された箱の基準をどこにするのかをh位置iで指定します.位置には上部

‘t’

,中央

‘c’

,下部

‘b’

の三つが使えます.標準では中央になります.

\parbox{13zw}{段落が終わる命令\par を使っても改行されますが\par

標準では字下げされません.}

段落が終わる命令

を使っても改行されますが 標準では字下げされません.

\parbox[c]{4zw}{箱が中央に.}\ldots

\parbox[t][3zw][c]{4zw}{文字が中央,

上が基準}\ldots

\parbox[b][3zw][t]{4zw}{文字が下に,

下が基準}\ldots

\parbox{3zw}{文字が上で下を基準}

箱が中央

に. . . .文字が中 央,上が 基準

. . .

文字が下 に,下が 基準 . . .

文字が 上で下 を基準

ページのような箱を組む

minipage

環境もあります.

\begin{minipage}[

h位置i

]{

hi

}

ページ内容

\end{minipage}

minipage

環境では段落が組まれますし,脚注の出力も可能です.

この環境は~

\begin{minipage}[t]{7zw}

ページを組みあげるので脚注\footnote{脚注です.} もページの中に出力されます.

\end{minipage}

~のようになります.

この環境は ページを組みあ げ る の で 脚 注a もページの中に 出力されます.

a脚注です.

のようになります.

9.9.4 箱の保存と使用

ある要素を箱の中に保存し,それを再利用できればエネルギー消費を減らすことができ ます.

\newsavebox{

h綴りi

}

箱を保存するためには保存する場所の確保を

\newsavebox

で行います.

L

A

TEX

が使っ ても良い箱は数が限られているのであらかじめいくつくらい使うのかを宣言してあげま す.宣言するときはバックスラッシュを先頭に付けます.箱の中に要素を保存するときは

\savebox

\sbox

命令を使います.

\savebox{

h綴りi

}[

h幅i

][

h要素の位置i

]{

h要素i

}

\sbox{

h綴りi

}{

h要素i

}

箱の幅や要素の位置を指定するときは

\savebox

を使います.もちろん幅を指定しないと 要素の位置は指定できません.上記の命令のほかにも

lrbox

環境があります.行に収ま るくらいの要素を

lrbox

環境の中に記述するとh綴りiの箱に代入します.

\begin{lrbox}{

h綴りi

}

要素

\end{lrbox}

これまでの命令では箱を用意してその中に要素を保存するだけですので,保存した箱 を

\usebox

命令で使います.

\usebox{

h綴りi

}

\usebox

命令を使うとh綴りiの箱に保存されている要素を複数回再利用できます.

\newsavebox{\hoge}

\savebox{\hoge}{\LaTeXe から\LaTeX3 }

\usebox{\hoge}, \usebox{\hoge}.\par

\usebox{\hoge}, \usebox{\hoge}.\par

\sbox{\hoge}{} \usebox{\hoge}

LATEX 2εからLATEX3, LATEX 2εからLATEX3. LATEX 2εからLATEX3, LATEX 2εからLATEX3.

L

A

TEX

の作業領域は限られていますので

\setbox

命令でh綴りiの箱を使い終わったら 空にします.

9.9.5 箱の上げ下げ

ある要素を箱の中に入れて,さらに上げ下げを同時に行う

\raisebox

命令もあります.

\raisebox{

h上げ下げi

}[

h高さi

][

h深さi

]{

h要素i

}

\raisebox

命令の中には文字列や他の箱も挿入できます.

好き好き

L

A

TEX 2

ε初級編

9.9

箱の操作

9

ありゃま,\raisebox{1zw}{ほげほげ}

\raisebox{-1zw}{どれどれ}で,

\raisebox{1.5zw}{\fbox{枠付きの箱}}だよ.

ありゃま,

ほげほげ

どれどれで,

枠付きの箱 だよ.

この命令でこんな悪ふざけもできます.

\fbox{ほげ,\raisebox{1zw}{ほげ} ほげ,\raisebox{-1zw}{ほげ} ほげ,\raisebox{1zw}{ほげ} ほげ,\raisebox{-1zw}{ほげ.}}

ほげ,

ほげ ほげ,

ほげ ほげ,

ほげ ほげ,

ほげ.

9.9.6 罫線と下線

箱とは違うのですが罫線をここで紹介しておきます.

\rule[

h上げ率i

]{

h幅i

}{

h高さi

}

\rule

命令は使いものになります.見えない罫線を引くこともできます.例えば幅が

0 pt

でも高さのある罫線,高さが

0 pt

でも幅のある罫線が使えますから,こんな使い方もでき るわけです.枠の見える状態での例を見てください.

ほげ\fbox{\rule{0pt}{3zw}\rule{4zw}{0pt}}

ほげ\fbox{\rule{0pt}{3zw}\rule{2zw}{0pt}} ほげ ほげ

箱とは違うのですが下線も紹介しておきます.下線は

\underline

を使います.

\underline{

h要素i

}

\underline

の中に箱を入れることもできますし,何を入れても構いません.

\underline{\fbox{枠付きの箱}の下線}の調 子はどうですか?そりゃぁ,\underline{ }ですよ.

枠付きの箱 の下線 の調子はどうですか?そりゃぁ,

下線 ですよ.

9.9.7 枠付きの箱その 2

L

A

TEX

の標準では

\fbox

\framebox

命令が使えます.

\fbox{これは枠付きの箱} \\

\framebox[10zw][c]{ほげほげ}\\

\fbox{\fbox{2重枠の箱}} \\

{\fboxrule=1pt\fbox{枠の太い箱}}\\

{\fboxsep=0pt\fbox{文字と枠がぴったりな箱}}

これは枠付きの箱 ほげほげ

2重枠の箱

枠の太い箱

文字と枠がぴったりな箱

Timothy Zandt

氏によるfancyboxを使ってみると枠付きの箱を出しやすいでしょう.

枠付きの箱に文字列を入れるための命令として

\shadowbox

\doublebox

\ovalbox

\Ovalbox

の四つがあります.

\shadowbox{影付きの箱} \\

\doublebox{2重の枠付きの箱 \\

\ovalbox{辺が丸い箱} \\

\Ovalbox{太くて辺が丸い箱}}

影付きの箱

2重の枠付きの箱

¨

§

¥

辺が丸い箱¦

¨

§

¥

太くて辺が丸い箱¦

fancyboxを使うと

Sbox

環境というものが使えて,これは環境内のものを箱(レジス

タ)である

\TheSbox

に保存します.このようにして保存した箱を

\fbox

などで囲みま す.例えば

minipage

を枠で囲む

fminipage

環境を作成するのであれば

\newenvironment{fminipage}%

{\begin{Sbox}\begin{minipage}}%

{\end{minipage}\end{Sbox}\fbox{\TheSbox}}

とします.

\newenvironment{fminipage}%

{\begin{Sbox}\begin{minipage}}%

{\end{minipage}\end{Sbox}\fbox{\TheSbox}}

\begin{fminipage}{.8\linewidth}

この環境は枠で囲まれます.というか,

囲んでくれないと困ります.

\end{fminipage}

この環境は枠で囲まれます.というか,囲 んでくれないと困ります.

数式環境などを枠で囲もうと思うとき,数式番号も含めて枠の中に入れるのはちょっと 面倒かもしれません.

\fbox

などの命令を使うとそこから数式を組み立てるモードではな く文章を組み立てるモードになりますので,もう

1

度数式環境を書きます.

\( y=f(x)+\fbox{\(C\)}\)

\begin{equation}

\fbox{\(y=f(x)\)}

\end{equation}

y= f (x)+ C

y= f (x) (9.1)

番号付きの数式を文章幅いっぱいに枠で囲むには

(\linewidth (

文章幅

)

−2\fboxrule−2\fboxsep) を計算します.これにはcalcパッケージが使えます.

%\usepackage{calc,fancybox}

\fbox{\parbox{%

(\linewidth-2\fboxrule-2\fboxsep)}{

\begin{equation} y=f(x) \end{equation}}}

y= f (x) (9.2)

eqnarray

環境は枠で囲もうと思うとfancyboxの場合は

Beqnarray

が用意されていま すので,こちらの環境を

\fbox

などで囲みます.

好き好き

L

A

TEX 2

ε初級編

9.9

箱の操作

9

\fbox{\begin{Beqnarray}

y&=&f(x)\\

&=&1/x

\end{Beqnarray}}

y = f (x) (9.3)

= 1/x (9.4)

table

環境や

figure

環境などで見出しも含まれる要素は

\Sbox

で一度保存したもの を枠で囲むようにします.こうすると

%\usepackage{calc,fancybox}

\newenvironment{ftable}[1][htbp]%

{\begin{table}[#1]

\begin{Sbox}\begin{minipage}{%

(\linewidth-2\fboxrule-2\fboxsep)}}%

{\end{minipage}\end{Sbox}\fbox{\TheSbox}\end{table}}

のように

ftable

ffigure

のような環境が定義できます.この出力例が表

9.5

となり ます.

L

A

TEX2.09 L

A

TEX 2

ε

L

A

TEX3

9.5 LATEXの歴史

fancyboxでは

center

環境のように行揃えを行う環境があります.これを枠で囲むに

Bcenter

Bflushleft

Bflushright

環境を使います.

\fbox{\begin{Bcenter}

ここは \\ 中央揃えで \\ 枠付きなのだぁ.

\end{Bcenter}}

ここは 中央揃えで 枠付きなのだぁ.

\fbox{\begin{Bflushleft}

ここは \\ 左揃えでぇ〜 \\ 枠付き.

\end{Bflushleft}}

ここは 左揃えでぇ〜

枠付き.

\fbox{\begin{Bflushright}

ここはですねぇ \\ 右揃えで \\ 枠付き.

\end{Bflushright}}

ここはですねぇ 右揃えで 枠付き.

minipage

環境の中で行揃えの命令を使うことも考えられますが,その場合は横幅

を指定しないといけないので,これらの環境は便利でしょう.箇条書き環境も同様に

minipage

の中に入れて

\fbox

で囲むことも考えられますが,fancyboxでは

Bitemize

Benumerate

Bdescription

の三つがすでに定義されているので,これらの環境を枠で 囲みます.

\fbox{\begin{Benumerate}

\item ほげほげ.

\item あれあれあれあれ?.

\item どれどれ.\end{Benumerate}}

1. ほげほげ.

2. あれあれあれあれ?.

3. どれどれ.

\verb

命令を枠で囲むときは

\VerbBox

命令を使います.

\VerbBox{\fbox}{%

\verb|\VerbBox{\fbox}{\verb+文章+}|} \VerbBox{\fbox}{\verb+文章+}

verbatim

環境を枠で囲む場合はやはり先に

Sbox

環境で囲んで

\TheSbox

を枠で囲む ようにします.この場合

fverbatim

環境を定義したほうが便利でしょう.ただし,こ の場合

\VerbatimEnvironment

命令と

Verbatim

環境を併せて使わないとエラーになり ます.

\newenvironment{fverbatim}[1]%

{\VerbatimEnvironment \begin{Sbox}%

\begin{minipage}{#1} \begin{Verbatim}}%

{\end{Verbatim}\end{minipage}\end{Sbox}%

\fbox{\TheSbox}}

\begin{fverbatim}{.8\linewidth}

このべた書き環境は枠で囲まれて 出力されます.

\end{fverbatim}

このべた書き環境は枠で囲まれて 出力されます.

このほかにもfancyboxにはファイルから読み込んだ行をべた書き環境に出力する命令 なども用意されています.