%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Contents: LaTeX の微調整
% $Id: custom.tex,v 1.00 2000/06/28 20:18:32 nomura Exp $
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{{\LaTeX}のカスタマイズ}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{intro}
  これまでに説明してきたコマンドを使えば，
多くの人たちにとって見やすい文書を作成できるでしょう．
  それらは手が込んでいるようには見えませんが，
読みやすく見た感じのよい出版物の組版規則に従っています．

  しかし，必要なコマンドや環境が{\LaTeX}にない場合，
あるいは既存のコマンドによる出力では満足できない
場合もあるでしょう．

  本章では，新しいコマンドを定義する方法や
既存のコマンドを変更して異なる出力を得る方法などについて
説明していきます．
\end{intro}


%============================================================
\section{新しいコマンド，環境，パッケージ}
%============================================================
  この冊子に書かれているコマンドは全て枠で囲ってあり，
巻末の索引に書かれていることに気付かれた人もいるでしょう．
  ここでは，このようなことを行うのに必要な{\LaTeX}コマンドを
直接書く代わりに，新しいコマンドや環境を定義した
\wi{パッケージ}ファイルを作成して使用しています．
  この定義を用いると，次のように簡単に書くだけで
コマンド名を枠で囲い，索引に出力することができます．

\begin{example}
\begin{command}
\ci{dum}
\end{command}
\end{example}

  この例では，コマンド名の周りを枠で囲む\ei{command}という
新しい環境と，コマンド名を出力しそのコマンド名を
索引の見出しとして書き出す新しいコマンド \ci{ci}が
使用されています．
  実際に，この巻末にある索引で \ci{dum}コマンドを
探してみて下さい．
  そうすれば \ci{dum}という項目を見つけることができ，
この \ci{dum}コマンドについて説明している全てのページ数が
書かれていることがわかるでしょう．

  コマンドを枠の中に入れて出力するのがイヤになれば，
違った出力となるように\,\texttt{command}環境の定義を
変えることが簡単にできます．
  これは，コマンドを枠で囲うように{\LaTeX}コマンドを
直接使用して出力を行った箇所を文書中から全て探し出し，
いちいち変更するよりもはるかに簡単に行うことができるのです．


%------------------------------------------------------------
\subsection{新しいコマンドの作成}
%------------------------------------------------------------
  新たにコマンドを作成するには，以下のコマンドを使用します．

\begin{command}
\ci{newcommand}\verb|{|%
       \emph{name}\verb|}[|\emph{num}\verb|]{|\emph{definition}\verb|}|
\end{command}

\noindent
  基本的に，このコマンドは二つの引数を取ります．
  一つは作ろうとしているコマンド名\emph{name}であり，
もう一つはそのコマンドの定義を書き込む\emph{definition}です．
  ブラケット（角括弧，\verb|[ ]|）の中に書かれる引数
\emph{num}はオプション引数であり，この新しいコマンドが取る
引数の数（9までの数が可能）を指定します．
  このオプションが指定されていなければ，
引数は0すなわち引数がないことを表します．

  以下の二つの例は，コマンド定義の方法とその使い方を
示しています．
  最初の例は，\ci{tnss}という名前の新しいコマンドを
定義しています．
  これは，この冊子のオリジナル英文の表題である
``The Not So Short Introduction to \LaTeXe''という文字列を
定義したものです．
%  これは，この冊子の表題である``{\LaTeXe}への道''という
%文字列を定義したものです．
  このようなコマンドは，文書中に何度も何度も繰り返し
同じ文字列を書かなければならないときに使用すると便利でしょう．

\begin{example}
\newcommand{\tnss}{The not
    so Short Introduction to
    \LaTeXe}
This is ``\tnss'' \ldots{} 
``\tnss''
\end{example}
%\begin{example}
%\newcommand{\tnss}{{\LaTeXe}への道}
%  これは，``\tnss'' \ldots{} 
%``\tnss''
%\end{example}

  次の例は，引数を一つ取る新しいコマンドの定義を
示したものです．
  \verb|#1|の文字列の部分は，コマンドを使用する際に
指定する引数に置き換えられます．
  もし二つ以上の引数を使用したければ，
\verb|#2|などというように書けばよいのです．

\begin{example}
\newcommand{\txsit}[1]
 {This is the \emph{#1} Short 
      Introduction to \LaTeXe}
% 文章本体：
\begin{itemize}
 \item \txsit{not so}
 \item \txsit{very}
\end{itemize}
\end{example}
%\begin{example}
%\newcommand{\txsit}[1]
% {{\LaTeXe}への\emph{#1}道}
%% 文章本体：
%\begin{itemize}
% \item \txsit{多少厳しい}
% \item \txsit{極めて簡単な}
%\end{itemize}
%\end{example}

  {\LaTeX}では，すでに存在しているコマンドと
同じ名前を持つ新しいコマンドを作ることはできません．
  そこで既存のコマンドを再定義する時のために，
特別な \ci{renewcomannd}コマンドがあります．
  このコマンドは，\verb|\newcommand|コマンドと同じ方法で
使用することができます．

  また，\ci{providecommand}コマンドを使いたくなることが
あるかもしれません．
  このコマンドも \ci{newcommand}と同じなのですが，
すでに同名のコマンドが存在しているときには，
{\LaTeXe}はその定義を無視して処理を続けるところが異なります．

  {\LaTeX}コマンドの直後のホワイトスペースについては，
注意すべき点がいくつかあります．
  詳しくは，\pageref{whitespace}ページを参照して下さい．


%------------------------------------------------------------
\subsection{新しい環境の作成}
%------------------------------------------------------------
  \verb|\newcommand|コマンドと同じように，
必要な環境を作り出すコマンドとして \ci{newenvironment}が
あります．
  \ci{newenvironment}コマンドは，以下のようにして使用します．

\begin{command}
\ci{newenvironment}\verb|{|%
   \emph{name}\verb|}[|\emph{num}\verb|]{|%
   \emph{before}\verb|}{|\emph{after}\verb|}|
\end{command}

\noindent
  \verb|\newcommand|コマンドと同様に，
\ci{newenvironment}もオプション引数が指定できます．
  引数\emph{before}には，環境内の文章を処理する前に行う
内容を定義します．
  引数\emph{after}には，
\verb|\end{|\emph{name}\verb|}|コマンドが現れたときに行う
処理内容を定義します．

  以下に \ci{newenvironment}コマンドの使用例を示します．

\begin{example}
\newenvironment{king}
 {\rule{1ex}{1ex}%
      \hspace{\stretch{1}}}
 {\hspace{\stretch{1}}%
      \rule{1ex}{1ex}}

\begin{king} 
 My humble subjects \ldots
\end{king}
\end{example}
%\begin{example}
%\newenvironment{king}
% {\rule{1ex}{1ex}%
%      \hspace{\stretch{1}}}
% {\hspace{\stretch{1}}%
%      \rule{1ex}{1ex}}
%
%\begin{king} 
% つまらない主題\ldots
%\end{king}
%\end{example}

  引数\emph{num}は，\verb|\newcommand|コマンドと同じように
使用します．
  {\LaTeX}では，すでに存在している環境と同じ名前の環境は
定義できません．
  すでに存在している環境を変更したいときには，
\ci{renewenvironment}コマンドを使用します．
  定義の仕方は，\ci{newenvironment}コマンドと同じです．

  ここで示した例で使用しているコマンドについては，
後ほど説明します．
  \ci{rule}コマンドについては\pageref{cmd:stretch}ページ，
\ci{stretch}コマンドについては\pageref{cmd:stretch}ページ，
\ci{hspace}コマンドに関しては\pageref{sec:hspace}ページを
参照して下さい．


%------------------------------------------------------------
\subsection{パッケージの作成}
%------------------------------------------------------------
  新たにたくさんの環境とコマンドを定義すると，
文書のプリアンブルはとても長くなってしまいます．
  このような場合，定義したすべてのコマンドと環境を含んだ
{\LaTeX}パッケージを新たに作成するとよいでしょう．
  そうすれば，\ci{usepackage}コマンドを使用するだけで，
作成中の文書でそれらの定義が使用できるようになります．

\begin{figure}[!htbp]
\begin{lined}{\textwidth}
 \begin{verbatim}
 % Tobias Oetikerによるパッケージの例
 \ProvidesPackage{demopack}
 \newcommand{\tnss}{The not so Short Introduction to \LaTeXe}
 \newcommand{\txsit}[1]{The \emph{#1} Short 
                        Introduction to \LaTeXe}
 \newenvironment{king}{\rule{1ex}{1ex}hspace{\stretch{1}}}%
                      {\hspace{\stretch{1}}\rule{1ex}{1ex}}
 \end{verbatim}
 \end{lined}
 \caption{パッケージの例} \label{package}
\end{figure}
%\begin{figure}[!htbp]
% \begin{lined}{\textwidth}
% \begin{verbatim}
% % Tobias Oetikerによるパッケージの例
% \ProvidesPackage{demopack}
% \newcommand{\tnss}{{\LaTeXe}への道}
% \newcommand{\txsit}[1]{{\LaTeXe}への\emph{#1}道}
% \newenvironment{king}{\rule{1ex}{1ex}hspace{\stretch{1}}}%
%                      {\hspace{\stretch{1}}\rule{1ex}{1ex}}
% \end{verbatim}
% \end{lined}
% \caption{パッケージの例} \label{package}
%\end{figure}

  パッケージの作成は，基本的に文書のプリアンブルに
書いてあった定義内容を，拡張子\,\texttt{.sty}を持つファイルに
コピーすればよいだけです．
  作成するパッケージの最初には，以下のコマンドを
書いておきます．

\begin{command}
\ci{ProvidesPackage}\verb|{|\emph{package name}\verb|}|
\end{command}

\noindent
  \verb|\ProvidesPackage|コマンドは，
{\LaTeX}にパッケージ名を伝え，パッケージを二度
読み込もうとした際に気の利いたエラーメッセージを
出力してくれます．
  図\ref{package}は，これまでに示した例の中で
定義したコマンドを含んだパッケージの例を示しています．


%============================================================
\section{フォントの種類とそのサイズ}
%============================================================
%------------------------------------------------------------
\subsection{フォントを変更するコマンド}
\index{フォント}\index{フォントサイズ} 
%------------------------------------------------------------
  {\LaTeX}は，文書の論理的な構造（節，脚注など）に基づいて
適切なフォントとそのサイズを選びますが，
直接それらを変更したくなることもあるでしょう．
  表\ref{fonts}，\ref{sizes}に，
フォントやそのサイズを変更するためのコマンドを示します．
  それぞれのフォントの実際のサイズは，
レイアウトデザインの問題であり，文書クラスと
そのオプションの指定によって変わります．
  標準の文書クラスで定義されているサイズ変更コマンドと
その実際のフォントサイズを表\ref{tab:pointsizes}に示します．

\begin{example}
{\small The small and 
\textbf{bold} Romans ruled}
{\Large all of great big 
\textit{Italy}.}
\end{example}
%\begin{example}
%{\small 小さくて
%\,\textbf{肉太の}ローマ人は，}
%{\Large 偉大で大きな
%\,\textit{イタリア}を統治した．}
%\end{example}

  {\LaTeXe}で導入された重要な特徴のひとつに，
独立したフォント属性があります．
  つまり，フォントサイズや種類を変更するコマンドを実行する際，
それまでに指定されていたボールド，スラントといった属性を
保ち続けることができるようになっています．

  \emph{数式モード}では，一時的に\emph{数式モード}から出て
通常のテキストモードに移った後，これらのフォント変更
\emph{コマンド}を使用することになります．
  また別に，数式中でフォントを変更する特別なコマンドが
あります．
  これを表\ref{mathfonts}に示します．

\begin{table}[!bp]
 \caption{フォントの種類}\label{fonts}
 \begin{lined}{12cm}
 %
 % Alanが，\verb|\sfffamily|や\verb|\bfseries|といった形式の
 % コマンドについては説明しなくてもよいと言ってくれました．
 % これは，もっともだと思われたので記述していません．
 %
  \begin{tabular}{@{}rl@{\qquad}rl@{}}
   \ci{textrm}\verb|{...}|    & \textrm{\wi{roman}}     &
   \ci{textsf}\verb|{...}|    & \textsf{\wi{sans serif}}\\
   \ci{texttt}\verb|{...}|    & \texttt{typewriter}     \\[6pt]
   \ci{textmd}\verb|{...}|    & \textmd{medium}         &
   \ci{textbf}\verb|{...}|    & \textbf{\wi{bold face}} \\[6pt]
   \ci{textup}\verb|{...}|    & \textup{\wi{upright}}   &
   \ci{textit}\verb|{...}|    & \textit{\wi{italic}}    \\
   \ci{textsl}\verb|{...}|    & \textsl{\wi{slanted}}   &
   \ci{textsc}\verb|{...}|    & \textsc{\wi{small caps}}\\[6pt]
   \ci{emph}\verb|{...}|      & \emph{emphasized}       &
   \ci{textnormal}\verb|{...}|& \textnormal{document} font
  \end{tabular}
%  \begin{tabular}{@{}rl@{\qquad}rl@{}}
%   \ci{textrm}\verb|{...}|    & \textrm{\wi{ローマン}}          &
%   \ci{textsf}\verb|{...}|    & \textsf{\wi{サンセリフ}}        \\
%   \ci{texttt}\verb|{...}|    & \texttt{タイプライター}         \\[6pt]
%   \ci{textmd}\verb|{...}|    & \textmd{ミディアム}             &
%   \ci{textbf}\verb|{...}|    & \textbf{\wi{ボールド}}          \\[6pt]
%   \ci{textup}\verb|{...}|    & \textup{\jwi{たてたい@立体}}    &
%   \ci{textit}\verb|{...}|    & \textit{\jwi{イタリック@イタリック体}}\\
%   \ci{textsl}\verb|{...}|    & \textsl{\jwi{しゃたい@斜体}}    &
%   \ci{textsc}\verb|{...}|    & \textsc{\wi{スモールキャップス}}\\[6pt]
%   \ci{emph}\verb|{...}|      & \emph{強調}                     &
%   \ci{textnormal}\verb|{...}|& \textnormal{地の文}のフォント
%  \end{tabular}

  \bigskip
 \end{lined}
\end{table}

\begin{table}[!bp]
 \index{フォントサイズ}\index{もじ@文字!のおおきさ@---の大きさ}
 \index{もじ@文字!サイズ@---サイズ}
 \index{もじサイズ@文字サイズ}
 \index{フォント!のおおきさ@---の大きさ}
 \caption{フォントサイズ}\label{sizes}
 \begin{lined}{12cm}
  \begin{tabular}{@{}ll}
   \ci{tiny}        & \tiny          tiny font       \\
   \ci{scriptsize}  & \scriptsize    very small font \\
   \ci{footnotesize}& \footnotesize  quite small font\\
   \ci{small}       & \small         small font      \\
   \ci{normalsize}  & \normalsize    normal font     \\
   \ci{large}       & \large         large font
  \end{tabular}%
  \qquad\begin{tabular}{ll@{}}
   \ci{Large}        & \Large         larger font    \\[5pt]
   \ci{LARGE}        & \LARGE         very large font\\[5pt]
   \ci{huge}         & \huge          huge           \\[5pt]
   \ci{Huge}         & \Huge          largest
  \end{tabular}
%  \begin{tabular}{@{}ll}
%   \ci{tiny}         & \tiny          非常にちっちゃいフォント\\
%   \ci{scriptsize}   & \scriptsize    かなり小さいフォント    \\
%   \ci{footnotesize} & \footnotesize  ちょっと小さいフォント  \\
%   \ci{small}        & \small         小さいフォント          \\
%   \ci{normalsize}   & \normalsize    通常のフォント          \\
%   \ci{large}        & \large         大きなフォント
%  \end{tabular}%
%  \qquad\begin{tabular}{ll@{}}
%   \ci{Large}        & \Large         より大きなフォント  \\[5pt]
%   \ci{LARGE}        & \LARGE         さらに大きなフォント\\[5pt]
%   \ci{huge}         & \huge          もっと大きなフォント\\[5pt]
%   \ci{Huge}         & \Huge          でっかいフォント
%  \end{tabular}

  \bigskip
 \end{lined}
\end{table}

\begin{table}[!tbp]
 \caption{標準文書クラスにおけるフォントサイズ}
 \label{tab:pointsizes}\label{tab:sizes}
 \begin{lined}{12cm}
  \begin{tabular}{lrrr}
   \multicolumn{1}{c}{サイズ}             &
   \multicolumn{1}{c}{10pt \footnotesize(デフォルト)}&
   \multicolumn{1}{c}{11pt \footnotesize オプション}    &
   \multicolumn{1}{c}{12pt \footnotesize オプション}    \\
   \verb|\tiny|        &  5pt &  6pt &  6pt\\
   \verb|\scriptsize|  &  7pt &  8pt &  8pt\\
   \verb|\footnotesize|&  8pt &  9pt & 10pt\\
   \verb|\small|       &  9pt & 10pt & 11pt\\
   \verb|\normalsize|  & 10pt & 11pt & 12pt\\
   \verb|\large|       & 12pt & 12pt & 14pt\\
   \verb|\Large|       & 14pt & 14pt & 17pt\\
   \verb|\LARGE|       & 17pt & 17pt & 20pt\\
   \verb|\huge|        & 20pt & 20pt & 25pt\\
   \verb|\Huge|        & 25pt & 25pt & 25pt\\
  \end{tabular}

  \bigskip
 \end{lined}
\end{table}

\begin{table}[!bp]
 \caption{数式フォント}\label{mathfonts}
 \begin{lined}{\textwidth}
  \begin{tabular}{@{}lll@{}}
   \textit{コマンド}& \textit{入力例}& \textit{出力}\\[6pt]
   \ci{mathcal}\verb|{...}|& \verb|$\mathcal{B}=c$|& $\mathcal{B}=c$\\
   \ci{mathrm}\verb|{...}|& \verb|$\mathrm{K}_2$|& $\mathrm{K}_2$\\
   \ci{mathbf}\verb|{...}|& \verb|$\sum x=\mathbf{v}$|& $\sum x=\mathbf{v}$\\
   \ci{mathsf}\verb|{...}|& \verb|$\mathsf{G\times R}$|& $\mathsf{G\times R}$\\
   \ci{mathtt}\verb|{...}|& \verb|$\mathtt{L}(b,c)$|& $\mathtt{L}(b,c)$\\
   \ci{mathnormal}\verb|{...}|& \verb|$\mathnormal{R_{19}}\neq R_{19}$|&
     $\mathnormal{R_{19}}\neq R_{19}$\\
   \ci{mathit}\verb|{...}|& \verb|$\mathit{ffi}\neq ffi$|&
     $\mathit{ffi}\neq ffi$
  \end{tabular}

  \bigskip
 \end{lined}
\end{table}

  フォトサイズコマンドに関しては，\wi{ブレース}（中括弧）が
重要な役割をします．
  これは\emph{グループ}を作るために必要で，
グループ化を行うことで多くの{\LaTeX}コマンドの有効範囲を
制限することができます．\index{グループか@グループ化}

\begin{example}
He likes {\LARGE large and 
{\small small} letters}. 
\end{example}
%\begin{example}
%  彼は，{\LARGE 大きな文字と
%{\small 小さな文字}が好きです}．
%\end{example}

  フォントサイズコマンドは行間隔も変更します．
  しかしこれは，フォントサイズコマンドの有効範囲内で
段落が終了している場合にのみ適用されます．
  そのため，閉じブレース（中括弧：\verb|}|）の位置には
注意して下さい．
  次の二つの例によって，\verb|\par|コマンドの位置と
行間隔の関係を確認して下さい．

\begin{example}
{\Large Don't read this! It is not
true. You can believe me!\par}
\end{example}
%\begin{example}
%{\Large ここを読むな！ これは，
%真実ではない．私を信じろ！!\par}
%\end{example}

\begin{example}
{\Large This is not true either.
But remember I am a liar.}\par
\end{example}
%\begin{example}
%{\Large これも真実ではない．しかし，私が
%ウソ付きであることを覚えておくがいい．}\par
%\end{example}

  文章中で一つ以上の段落全部のフォントサイズを
変更したいときには，フォント変更のコマンドを
環境として使用するとよいでしょう．

\begin{example}
\begin{Large} 
 This is not true.
 But then again, what is these
 days \ldots
\end{Large}
\end{example}
%\begin{example}
%\begin{Large} 
% これは真実ではありません．
% しかし，その上にまた最近は\ldots
%\end{Large}
%\end{example}

\noindent
  このように環境として使用すると，
ブレース（中括弧）の数を数えて対応関係に
注意を払う必要がなくなります．


%------------------------------------------------------------
\subsection{フォントに対する注意の喚起}
%{Danger, Will Robinson, Danger}
%------------------------------------------------------------
  この章の最初でも述べましたが，
以上のように直接フォントの種類とサイズを変更するような
コマンドを文書中でむやみに使用することは危険です．
  これは，文書の論理的構造と視覚的構造とを分離するという
{\LaTeX}の基本的な考え方に反します．
  つまり，特別な情報を読者に伝えるためにいくつかの場所で
同じフォント変更コマンドを使う場合には，
フォント変更コマンドを直接使用する代りに，
\verb|\newcommand|を使って``論理的に扱えるコマンド''を
定義するべきなのです．

\begin{example}
\newcommand{\oops}[1]{\textbf{#1}}
Do not \oops{enter} this room,
it's occupied by a \oops{machine}
of unknown origin and purpose.
\end{example}
%\begin{example}
%\newcommand{\oops}[1]{\textbf{#1}}
%  この部屋には\oops{入る}な．
%  由来や目的のわからない
%\oops{機械}が置いてあるんだ．
%\end{example}

\noindent
  この手法には，注意を引くために\,\verb|\textbf|以外の
別の視覚的表示を使うかどうかを，文書作成中にその場その場で
指定したり，\verb|\textbf|を使用しているすべての場所を
探したりする必要がなく，さらには危険を知らせたり
別の理由のためにどんな表示をすればよいかをその段階で
理解していなくても，少し後の段階で決定できるという
利点があります．


%------------------------------------------------------------
\subsection{フォントに関する助言}
%------------------------------------------------------------
  フォント種類とフォントサイズに関する記述をまとめるために，
ここでちょっとした助言をしておきましょう．\nopagebreak

\begin{quote}
 \underline{\textbf{Remember\Huge!}} \textit{The}
 \textsf{M\textbf{\LARGE O} \texttt{R}\textsl{E}} fonts \Huge you
 \tiny use \footnotesize \textbf{in} a \small \texttt{document},
 \large \textit{the} \normalsize more \textsc{readable} and
 \textsl{\textsf{beautiful} it bec\large o\Large m\LARGE e\huge s}.
\end{quote}
%\begin{quote}
% \underline{\textbf{注意\Huge!}} \textit{より}
% \textsf{お\textbf{\LARGE お}\texttt{く}\textsl{の}}フォント
% を\textbf{文}書\small\texttt{中で},\Huge あなたが\tiny 使え
% ば\footnotesize 使う程，\large\textit{それは}\normalsize よ
% り\textsc{読みやすく}そして\textsl{\textsf{見栄えのする} 文
% 書に\large な\Large り\LARGE ま\huge す}．
%\end{quote}


%============================================================
\section{スペース}
%============================================================
%------------------------------------------------------------
\subsection{行間隔}\index{ぎょうかんかく@行間隔}
%------------------------------------------------------------
  文書中で行間を広げたい場合，文書のプリアンブルで
以下のコマンドに値を設定することで行間を
変更することができます．

\begin{command}
\ci{linespread}\verb|{|\emph{factor}\verb|}|
\end{command}

\noindent
  ``ワンハーフ''スペースに
したい時には\,\verb|\linespread{1.3}| を，
``ダブル''スペースで文書を
書く際には\,\verb|\linespread{1.6}| を指定します．
  通常，行間は広がっておらず既定値は1となっています．
\index{ダブルスペース}


%------------------------------------------------------------
\subsection{段落のレイアウト}\label{parsp}
%------------------------------------------------------------
  {\LaTeX}には，段落のレイアウトを変更する
二つのパラメータが存在します．
  作成している文書のプリアンブルで以下のように定義すると，
段落のレイアウトを変更することができます．

\begin{code}
 \ci{setlength}\verb|{|\ci{parindent}\verb|}{0pt}| \\
 \verb|\setlength{|\ci{parskip}\verb|}{1ex plus 0.5ex minus 0.2ex}|
\end{code}

\noindent
  この二つのコマンドは，段落最初のインデント量を零にして，
二つの段落間のスペースを増やします．
  大陸ヨーロッパでは，このように段落間を空け，
インデントしないレイアウト形式がよく使われます．
  ところが，このレイアウトは目次にも影響を及ぼすことに
注意して下さい．
  上述のように指定すると，目次に現れる各行はこれまで以上に
もっと行間のスペースが空いてしまいます．
  これを避けるためには，上述のコマンドを
文書のプリアンブルから\,\verb|\tablefocontents|の後に
移動させるか，使用を見送るかすることになるでしょう．
  それというのも，本格的なほとんどの書籍では，
段落最初の行はインデントされており，
段落間に余分なスペースが取られることはないからです．

  インデントしないようにした段落でインデントを
行いたいときには，次のコマンドを
段落の最初で使用します\footnote{%
  節の見出し直後の段落でインデントを行うには，
`tools'に同梱の\pai{indentfirst}パッケージを
使用して下さい．}．

\begin{command}
\ci{indent}
\end{command}

\noindent
  明らかにこれは，\verb|\parindent|が零以外の値である
ときにしか意味をなしません．

  インデントされない段落を作成するには，
段落の最初で次のコマンドを使用します．

\begin{command}
\ci{noindent}
\end{command}

\noindent
  これは，節などのコマンドを用いずに，
直接本文を書き始める際に使用できます．


%------------------------------------------------------------
\subsection{水平方向のスペース}\label{sec:hspace}
%------------------------------------------------------------
  {\LaTeX}は，単語間や文と文との間のスペースの大きさを
自動的に決定します．
  水平方向のスペースを増やすには，次のコマンドを使用します．
\index{すいへいほうこう@水平方向!---のスペース}

\begin{command}
\ci{hspace}\verb|{|\emph{length}\verb|}|
\end{command}

  たとえ行頭や行末に現れてもこのスペースを
有効にしたい場合には，\verb|\hspace|コマンドの
代わりに\,\verb|\hspace*|コマンドを使用します\footnote[0]{%
  つまり，\texttt{\bs hspace}コマンドは行頭や行末では
無視されることがわかります．}．
  \emph{length}には，単位の付いた長さを指定します．
  主な長さの単位を表\ref{units}に示しておきます．
\index{たんい@単位}\index{すんぽう@寸法}

\begin{example}
This\hspace{1.5cm}is a space 
of 1.5 cm.
\end{example}
%\begin{example}
%  これは\hspace{1.5cm}1.5cのスペースです．
%\end{example}

\suppressfloats
\begin{table}[tbp]
 \caption{{\TeX}での単位}\label{units}\index{たんい@単位}\index{すんぽう@寸法}
 \begin{lined}{9.5cm}
  \begin{tabular}{@{}ll@{}}
   \texttt{mm}& ミリメートル $\approx 1/25$インチ \quad \demowidth{1mm}\\
   \texttt{cm}& センチメートル = 10ミリメートル \quad \demowidth{1cm}\\
   \texttt{in}& インチ $=$ 25.4ミリメートル \quad \demowidth{1in}\\
   \texttt{pt}& ポイント $\approx 1/72$インチ $\approx \frac{1}{3}$~mm
    \quad\demowidth{1pt}\\
   \texttt{em}& ほぼ現在使用中のフォントの文字`M'の幅
    \quad \demowidth{1em}\\
   \texttt{ex}& ほぼ現在使用中のフォントの文字`x'の高さ
    \quad \demowidth{1ex}
  \end{tabular}

  \bigskip
 \end{lined}
\end{table}

  次のコマンドは，特別に伸び縮みするスペースを生成します．
\label{cmd:stretch}

\begin{command}
\ci{stretch}\verb|{|\emph{n}\verb|}|
\end{command} 

\noindent
  このコマンドを使用すると，その行で取れるだけのスペースを
生成します．
  二つの\verb|\hspace{\stretch{|\emph{n}\verb|}}|コマンドが
同じ行に現れた場合，引数\emph{n}に指定された数値に応じた
スペースが取られます．

\begin{example}
x\hspace{\stretch{1}}
x\hspace{\stretch{3}}x
\end{example}


%------------------------------------------------------------
\subsection{垂直方向のスペース}
%------------------------------------------------------------
  段落，節，小節などの間のスペースは，{\LaTeX}が自動的に
決定します．
  必要があれば，\emph{段落間}の垂直方向のスペースを
次のコマンドで余分に空けることができます．

\begin{command}
\ci{vspace}\verb|{|\emph{length}\verb|}|
\end{command}

\noindent
  このコマンドは，通常二つの空行の間で使用します．
  もしページの最初もしくは最後でもこのスペースを
取りたい場合には，\verb|\vspace|コマンドの代わりに
アスタリスク付きの\,\verb|\vspace*|コマンドを使用して下さい．
\index{すいちょくほうこう@垂直方向!---のスペース}

  ページの一番下の端に文章を出力したり，ページの中央に
出力したりするために\,\verb|\pagebreak|コマンドと
一緒に\,\verb|\stretch|コマンドを使用します．

%\begin{code}
% \begin{verbatim}
%  Some text \ldots
%
%  \vspace{\stretch{1}}
%  This goes onto the last line of the page.\pagebreak
% \end{verbatim}
%\end{code}
\begin{code}
 \begin{verbatim}
  文章が\ldots

  \vspace{\stretch{1}}
  この文章は，ページの一番下に出力されます．\pagebreak
 \end{verbatim}
\end{code}

  \emph{一つの}段落中の行間や\,\texttt{table}環境の各行の
間隔を余分に空けたい場合には，次のコマンドを使用します．

\begin{command}
\ci{\bs}\verb|[|\emph{length}\verb|]|
\end{command}


%============================================================
\section{ページレイアウト}\index{ページレイアウト}
%============================================================
\begin{figure}[!hp]
 \begin{center}
  \makeatletter\@layout\makeatother
 \end{center}
 \vspace*{1.8cm}
 \caption{ページレイアウトパラメータ}\label{fig:layout}
\end{figure}

  {\LaTeXe}では，\verb|\documentclass|コマンドのオプションで
出力する用紙サイズを設定でき，適切な\wi{マージン}などが
自動で設定されますが，その値に満足できないこともあります．
  そんな場合，マージンなどの値を変更することができます．
  \thispagestyle{fancyplain}
  図\ref{fig:layout}に，変更することのできるパラメータを
示します．
  この図は，`tools'\footnote{%
\texttt{CTAN:/tex-archive/macros/latex/packages/tools}}
中の\pai{layout}パッケージを用いて作られたものです．

  \textbf{ちょっと待った！}\ldots
「ページの幅を少し広くしよう」と思い込む前に，
もう少し考えてみましょう．
  {\LaTeX}ではほとんどのことがそうであるように，
ページレイアウトにもそのように定義されている理由があるのです．

  確かに，市販のMS Wordのページレイアウトと比較すると
一行の幅はかなり狭くなっています．
  しかし，お気に入りの本\footnote{%
  評判の良い出版社が発行している書籍のことです．}を
手にとって，一行の文字数を数えてみて下さい．
  一行に，66文字以上はないでしょう．
  そこで，{\LaTeX}の出力結果でも同じように文字数を
数えて下さい．
  一行に66文字くらいであることがわかります．
  経験的に，一行にたくさんの文字を詰め込むととたんに
読みづらくなることがわかっています．
  これは，ある行の終わりから次の行の最初まで
目を移動するのが難しいためです．
  また，新聞が複数の列\footnote[0]{%
  日本の一般の縦組された新聞では，段ですね．}から
構成されているのも同じ理由です．

  そこで，もし作成している文書の幅を広げるならば，
その文書を読む人に無理をさせることを覚えておいて下さい．
  ただ，十分に注意を払うのならばその方法を教えましょう\ldots

  {\LaTeX}には，これらパラメータの長さを変更するために
二つのコマンドが存在し，通常文書のプリアンブルで使用します．

  一つ目は，パラメータに決まった値を直接設定するコマンドです．

\begin{command}
\ci{setlength}\verb|{|\emph{parameter}\verb|}{|\emph{length}\verb|}|
\end{command}

  二つ目は，パラメータに設定し長さを増減させるコマンドです．

\begin{command}
\ci{addtolength}\verb|{|\emph{parameter}\verb|}{|\emph{length}\verb|}|
\end{command} 

\noindent
  このコマンドは，現在の値を基準に設定することができるので，
\ci{setlength}コマンドよりも使いやすいでしょう．
  一行の幅を1cm広くするには，以下のコマンドを
文書のプリアンブルに書いて下さい．

\begin{code}
 \verb|\addtolength{\hoffset}{-0.5cm}|\\
 \verb|\addtolength{\textwidth}{1cm}|
\end{code}

\noindent
  この場合，\pai{calc}パッケージを使用すると，
\ci{setlength}コマンドなどの引数中，もしくは
数値を書き込むことのできる場所に加減乗除などの算術式が
使用できるようになります．


%============================================================
\section{もっともっと長さについて}
%============================================================
  可能である限り，{\LaTeX}で文書を作成する際には
直接長さを指定することは避け，ページレイアウトの幅や高さを
基準にして長さを設定します．
  図の幅に対しては，ページを埋めるために\,\verb|\textwidth|を
基にします．

  以下の三つのコマンドは，引数\emph{text}にある
文字列の高さ，深さ，幅を \emph{command}に書かれたコマンドに
設定します．

\begin{command}
\ci{settoheight}\verb|{|\emph{command}\verb|}{|\emph{text}\verb|}|\\
\ci{settodepth}\verb|{|\emph{command}\verb|}{|\emph{text}\verb|}|\\
\ci{settowidth}\verb|{|\emph{command}\verb|}{|\emph{text}\verb|}|
\end{command}

  次に，これらのコマンドの使用例を示します．

\begin{example}
\flushleft
\newenvironment{vardesc}[1]{%
  \settowidth{\parindent}{#1:\ }
  \makebox[0pt][r]{#1:\ }}{}

\begin{displaymath}
 a^2+b^2=c^2
\end{displaymath}

\begin{vardesc}{Where}$a$, 
 $b$ -- are adjunct to the right 
 angle of a right-angled triangle.  

 $c$ -- is the hypotenuse of 
 the triangle and feels lonely.

 $d$ -- finally does not show up 
 here at all. Isn't that puzzling?
\end{vardesc}
\end{example}
%\begin{example}
%\flushleft
%\newenvironment{vardesc}[1]{%
%  \settowidth{\parindent}{#1:\ }
%  \makebox[0pt][r]{#1:\ }}{}
%
%\begin{displaymath}
% a^2+b^2=c^2
%\end{displaymath}
%
%\begin{vardesc}{ここで，}
% $a$, $b$ -- は，直角三角形の直角を挟む
% 辺の長さです．
%
% $c$ -- は，直角三角形の斜辺の長さであり，
% 一つで淋しい．
%
% $d$ -- は，ここでは最後まで現れません．
% わけの分からないことはありませんか?
%\end{vardesc}
%\end{example}


%============================================================
\section{ボックス}
%============================================================
  {\LaTeX}は，ボックスを配置しまくることでページを作成します．
  それぞれの文字は小さなボックスであり，単語を形成するために
別の文字とつなぎ合わされます．
  これらの単語は，また別の単語とつなぎ合わされます．
  この際，単語間には伸びたり縮んだりして
ページを同じ長さの行で正確に埋め尽くすことができる
ゴムのような特別な糊が使用されます．

  これが{\TeX}で，実際に行われていることの最も簡単な説明です．
  要するに，{\TeX}は糊とボックスを操っている
ということになります．
  文字だけがボックスを形成しているわけではありません．
  別のボックスを含んだボックスの中に仮想的にあらゆる要素を
置くことができ，{\LaTeX}はそれぞれのボックスを
あたかも一つの文字として扱います．

  これまでの章で既にいくつかのボックスを扱っているのですが，
今まで説明してきませんでした．
  例えば，\ei{tabular}環境や \ci{includegraphics}コマンドは
共に一つのボックスを作ります．
  このことは，二つの表や図を横に並べることが
簡単にできることを意味します．
  ただし，並べられた際の幅が \ci{textwidth}を
越えないことを確認することは必要でしょう．

  また次の二つの方法で，任意の段落を一つのボックスに
収めることもできます．
  一つは

\begin{command}
\ci{parbox}\verb|[|\emph{pos}\verb|]{|\emph{width}\verb|}{|\emph{text}\verb|}|
\end{command}

\noindent
コマンドで，もう一つは

\begin{command}
\verb|\begin{|\ei{minipage}\verb|}[|\emph{pos}\verb|]{|\emph{width}\verb|}| text
\verb|\end{|\ei{minipage}\verb|}|
\end{command}

\noindent
環境です．
  オプション引数の \emph{pos}パラメータは，
前後の文章のベースラインに対するボックスの上下位置を
設定するためのもので，\texttt{c}，\texttt{t}，\texttt{b}の
いずれかを指定します．
  \emph{width}はボックスの幅を決める引数で，長さを指定します．
  \ei{minipage}環境と \ci{parbox}コマンドの大きな違いは，
\ci{parbox}コマンドの中ではあらゆるコマンドと環境が
使用できないのに対して，\ei{minipage}環境内では
そのほとんどが使用できることにあります．

  改行を含んだ段落全体を詰め込む \ci{parbox}とは別に，
水平方向にだけ文章などを並べる一連のボックスコマンドもあります．
  一つは，既に知っているコマンドです．
  \ci{mbox}コマンドがそれに当たります．
  このコマンドは，ひと続きのボックスを別のボックスに
詰め込んだり，{\LaTeX}が二つの単語に分断しないように
するために使用されます．
  ボックスを別のボックスの中に置くことができるように，
これらの水平ボックスも非常に柔軟に扱うことができます．

\begin{command}
\ci{makebox}\verb|[|\emph{width}\verb|][|\emph{pos}\verb|]{|\emph{text}\verb|}|
\end{command}

\noindent
  引数 \emph{width}は出力されるときのボックスの幅を
指定します\footnote{%
  これは，ボックスの中に書かれる文章などの幅よりも
短くすることもできます．
  すなわち幅を0ptと指定することもでき，
周りのボックスに影響することなく
ボックスの中の文字列などを組むことができます．}．
  この引数には，長さを表すパラメータのほかに，\ci{width}，
\ci{height}，\ci{depth}，\ci{totalheight}といったコマンドも
使用できます．
  これらのコマンドには，\emph{text}で指定された文字列を
組版したときに得られるボックスの数値がセットされます．
  \emph{pos}パラメータは，次に示す一文字を取ることができます．
  すなわち，\texttt{c}（中央：\textbf{c}enter），
\texttt{l}（左詰め：\textbf{l}eft），
\texttt{r}（右詰め：\textbf{r}right），
ボックス幅一杯に文字列を広げる\,\texttt{s}の4つです．

  \ci{framebox}コマンドは，
文字列を枠で囲む以外は \ci{makebox}コマンドと
全く同じように使用することができます．

  以下に，\ci{makebox}，\ci{framebox}コマンドを
使用した例を示します．

\begin{example}
\makebox[\textwidth]{%
   c e n t r a l}\par
\makebox[\textwidth][s]{%
   s p r e a d}\par
\framebox[1.1\width]{Guess I'm 
   framed now!} \par
\framebox[0.8\width][r]{Bummer, 
   I am to wide} \par
\framebox[1cm][l]{never 
   mind, so am I} 
Can you read this?
\end{example}
%\begin{example}
%\makebox[\textwidth]{%
%   ち ゅ う お う}\par
%\makebox[\textwidth][s]{%
%   ひ ろ が り ま す}\par
%\framebox[1.1\width]{今，
%   枠の中にいると思う!} \par
%\framebox[0.8\width][r]{あ〜あ，
%   広がりたい} \par
%\framebox[1cm][l]{気に
%   するなよ，俺もなんだ} 
%ここが読めるかな?
%\end{example}

  水平方向の制御を理解したところで，
次は垂直方向の説明に移りましょう\footnote{%
  全制御は，水平，垂直の両方向の制御によって
なされるだけです\ldots}．
  {\LaTeX}では，何でもないことです．

\begin{command}
\ci{raisebox}\verb|{|\emph{lift}\verb|}[|\emph{depth}\verb|][|\emph{height}\verb|]{|\emph{text}\verb|}|
\end{command}

\noindent
  上記のコマンドで，ボックスを上下方向へ
移動させることができます．
  最初の三つのパラメータ内には，
\emph{text}引数で与えられた文字列を組版したときの
ボックスの大きさに基づいて設定される \ci{width}，\ci{height}，
\ci{depth}，\ci{totalheight}コマンドが使用できます．

\begin{example}
\raisebox{0pt}[0pt][0pt]{\Large%
 \textbf{Aaaa\raisebox{-0.3ex}{a}%
 \raisebox{-0.7ex}{aa}%
 \raisebox{-1.2ex}{r}%
 \raisebox{-2.2ex}{g}%
 \raisebox{-4.5ex}{h}}}
he shouted but not even the next
one in line noticed that something
terrible had happened to her.
\end{example}
%\begin{example}
%\raisebox{0pt}[0pt][0pt]{\Large%
% \textbf{あらああ\raisebox{-0.3ex}{あ}%
% \raisebox{-0.7ex}{あ}%
% \raisebox{-1.2ex}{あ}%
% \raisebox{-2.2ex}{あ}%
% \raisebox{-4.5ex}{お}}}
%彼は叫んだが，一列になっていた
%後ろの者でさえ彼女の身に起きた
%恐ろしいことに気付かなかった．
%\end{example}


%============================================================
\section{罫線と支柱}\label{sec:rule}
%============================================================
  数ページ前に，次のコマンドがあったことに
気付いた人もいるでしょう．

\begin{command}
\ci{rule}\verb|[|\emph{lift}\verb|]{|\emph{width}\verb|}{|\emph{height}\verb|}|
\end{command}

\noindent
  通常このコマンドは，単純な黒塗りのボックスを出力します．

\begin{example}
\rule{3mm}{.1pt}%
\rule[-1mm]{5mm}{1cm}%
\rule{3mm}{.1pt}%
\rule[1mm]{1cm}{5mm}%
\rule{3mm}{.1pt}
\end{example}

  このコマンドは，垂直方向，水平方向の罫線を描くのに
使用できます．
  例えば，この冊子の表紙に描かれている罫線は
この \ci{rule}コマンドを使用して描いています．

  特別な場合として，高さのみがあり幅が零の罫線も
描くことができます．
  組版では，\jwi{しちゅう@支柱}と呼ばれます．
  これは，ページ中の要素の高さがある値より小さくならない
ようにするために使われます．
  例えば，\texttt{tabular}環境中で行の高さをある高さ以上に
するために使用します．

\begin{example}
\begin{tabular}{|c|}
 \hline
 \rule{1pt}{4ex}Pitprop \ldots\\
 \hline
 \rule{0pt}{4ex}Strut\\
 \hline
\end{tabular}
\end{example}
%\begin{example}
%\begin{tabular}{|c|}
% \hline
% \rule{1pt}{4ex}見える柱\ldots\\
% \hline
% \rule{0pt}{4ex}支柱\\
% \hline
%\end{tabular}
%\end{example}


%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "jlshort"
%%% End: 
