%表題   ごくらくDCL
%
%履歴
%\Drireki{
%         95/04/13 余田 成男
%        }
%
%\Dchapter{レイアウトしよう}
\Dchapterhead

レイアウトのパッケージを用いると, ひとつの用紙に何個もの図形を並べたり, 
描画領域をそれぞれの出力装置のもつ作画可能な
領域全体に広げたりすることが簡単にできます.

%-----------------------------------------------------------------------
\section{フレームの分割}

同じ様な図形を沢山並べたい時, {\tt GROPN} のあとで {\tt SLDIV}ルーチン
を呼ぶと, 第1レベルめ(用紙全体)のフレームが分割され, 次のレベルのフレー
ムが定義されます.  分割されたフレームをあたかも1枚の紙のように扱って,
{\tt GRFRM} の実行により, 次のフレームに自動的に移っていきます. 
\vspace{1em}

次のプログラム {\tt LAY1} では, {\tt DO 20} のループの中で, 普通に改
ページをしながら描画するのと同じように, {\tt GRFRM} と {\tt USGRPH} を
呼んで折れ線グラフを描いています. 21行めの {\tt SLDIV} ルーチンでは 
$3\times2=6$ 分割していますから, 7番めの図は自動的に次のページに移って
います. また, 第\ref{s:u1d_fx}節の出力結果と比較して, 文字の大きさが
分割されたフレームの大きさに応じて小さくなっていることにも注意して下さ
い.

\begin{itemize}
\item {\tt SLDIV(CFORM,IX,IY)} [フレームの分割を行ない, 
                                次のレベルのフレームを定義する] \label{SLDIV}
  \begin{quote}
    \begin{tabular}{llp{11cm}}
      {\tt CFORM}        & (文字型) & フレームを順に割り付けていく方向.
                                      {\tt 'T'}:縦方向, {\tt 'Y'}:横方向. \\
      {\tt IX}, {\tt IY} & (整数型) & $x$ 方向, $y$ 方向の分割数.
    \end{tabular}
  \end{quote}
\end{itemize}

\Dproginput{layout/lay1.f}

\begin{center}
\Depsf[10cm]{layout/lay1_001.eps}\\
{\bf lay1.f: page1}\\
\end{center}

\begin{center}
\Depsf[10cm]{layout/lay1_002.eps}\\
{\bf lay1.f: page2}\\
\end{center}


\newpage
%-----------------------------------------------------------------------
\section{描画領域の変更}

前章までの例では, 用紙の形は長方形なのに, そこに最大内接する正方形の領
域をとって$[0,1]\times[0,1]$のV-座標系を考え, その中だけに図を描いてき
ました. これに対して, 紙一杯に図を描く例が次のプログラム {\tt LAY2} で
す.  物理的な描画範囲一杯に作画したい時は, {\tt SGLSET} ルーチンを用い
てレイアウトに関する論理型内部変数 {\tt 'LFULL'} を {\tt .TRUE.} にし
ます. 長辺がV-座標系で$[0,1]$となりますから, ここではビューポートを 
{\tt (0.15,0.95,0.15,0.65)} として物理的な作画範囲に納まるようにとって
います. この範囲は出力装置によって異なりますので, プログラムによっては
出力する際にエラーを起こす可能性もあります. 御注意下さい.

\Dproginput{layout/lay2.f}

\begin{center}
\Depsf[10cm]{layout/lay2.eps}\\
{\bf lay2.f: frame1}\\
\end{center}


