Re: breakbox で改ページ

名前: .
日時: 2005-05-20 16:25:53
IPアドレス: 210.198.133.*

>>35962 # *どのパッケージが提供する* breakbox 環境の話なのかが不明ですが, # とりあえず,eclbkbox パッケージによるものと仮定します. このような“ページ分割可能な枠”を作成する環境はたいてい 環境の中身をいったんひとつのボックスとして組み上げたのち それを 1 行ずつに切り分けて枠(をなす罫線)を補います. したがって(明示的に作成したボックスの中,というのは元来, ページ分割可能な箇所ではありませんから)breakbox 環境の中では 単純に \newpage を用いても改ページが行われるわけではない, とわかります. これを回避するには,単に, 一度 breakbox 環境を終了させたのち改ページを行い, そのあとで breakbox 環境を再開する という処理を行えばよいわけです. ごく単純には, \def\breakboxnewpage{% \end{breakbox} \newpage \begin{breakbox}} くらいに定義した \breakboxnewpage を \newpage の代わりに 用いるところでしょう. このような単純な定義を用いた場合の出力では不満がある (i.e. 改ページ箇所の前後には,枠の上端あるいは下端に 相当する罫線を入れたくない)場合には,さらに手の込んだことを 行う必要があります. e.g. \documentclass{jarticle} \usepackage{eclbkbox} \makeatletter \newif\if@bk@omittop \newif\if@bk@omitbottom \def\breakbox{\@breakbox{\@bk@omittopfalse\@bk@omitbottomfalse}} \def\@breakbox#1{% \vskip\breakboxskip\relax #1% \setbox\bk@bxb\vbox\bgroup \advance\linewidth -2\fboxrule \advance\linewidth -2\fboxsep \hsize\linewidth\@parboxrestore \parindent\breakboxparindent\relax} \def\endbreakbox{\@endbreakbox\relax} \def\@endbreakbox#1{% \egroup #1% \ifhmode\par\fi {\noindent\bk@lcnt\@ne \@bkconttrue \baselineskip\z@ \lineskiplimit\z@ \lineskip\z@\vfuzz\maxdimen \bk@split\bk@addfsepht\bk@addskipdp \ifvoid\bk@bxb % Only one line \def\bk@fstln{% \bk@addfsepdp \vbox{% \if@bk@omittop\else \hrule\@height\fboxrule \fi \bk@line \if@bk@omitbottom\else \hrule\@height\fboxrule \fi}}% \else % More than one line \def\bk@fstln{% \vbox{% \if@bk@omittop\else \hrule\@height\fboxrule \fi \bk@line}% \hfil \advance\bk@lcnt\@ne \loop \bk@split \bk@addskipdp \leavevmode \ifvoid\bk@bxb % The last line \@bkcontfalse \bk@addfsepdp \vtop{% \bk@line \if@bk@omitbottom\else \hrule\@height\fboxrule \fi}% \else % 2,...,(n-1) \bk@line \fi \hfil \advance\bk@lcnt\@ne \if@bkcont \repeat}% \fi \leavevmode\bk@fstln\par}% \vskip\breakboxskip\relax} \def\breakboxnewpage{% \@endbreakbox{\@bk@omitbottomtrue}% \newpage \@breakbox{\@bk@omittoptrue\@bk@omitbottomfalse}} \def\breakboxnewpage{% \end{breakbox} \newpage \begin{breakbox}} \makeatother \begin{document} \def\text{% これは意味のないサンプルテキストです. これは意味のないサンプルテキストです. これは意味のないサンプルテキストです. これは意味のないサンプルテキストです. これは意味のないサンプルテキストです.} \def\TEXT{\text\text\text\text\text\par} \begin{breakbox} \TEXT\TEXT \breakboxnewpage \TEXT \breakboxnewpage \TEXT\TEXT \end{breakbox} \end{document} # このようなことをするくらいなら,ページ分割可能な枠を作成する環境を # 一から書いても大差ありませんが…

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)