2

私が書いている本の章で、エクスカーション用の新しい LaTeX 環境を定義しました。環境はマルチページであり、多くの場合、インライン イメージが含まれます。さらに、シェーディング環境を使用して環境に背景色を与え、少し目立たせています。

ただし、以下に示すように、環境はフローティング テーブルと画像によって分割されているため、環境の流れを視覚的に追うのがより難しくなっています。たとえば、そのフローティング画像またはテーブルが一部であるかどうかを確認するのが難しくなりました (背景色がないことは役に立ちません)。そのため、フローティング要素によって中断されないように環境を拡張するのが好きですが、それを行う方法がわかりません。

\newcounter{bioclipse}
\def\thebioclipse{\thechapter-\arabic{bioclipse}}
\newenvironment{bioclipse}[2][]{\begin{small}\begin{shaded}\refstepcounter{bioclipse} \par\medskip\noindent%
   \textbf{Bioclipse Excursion~\thebioclipse #1: #2
   \vspace{0.1cm} \hrule \vspace{0.1cm}}
   \rmfamily}{\medskip \end{shaded}\end{small}}

背景色が異なる場合でも、中断を許可しないソリューションは問題ありません。

4

1 に答える 1

1

挿入のアルゴリズムはかなり複雑です。基本的に、保留中の挿入をenvが適用されるページに入れないようにする必要がありbioclipseます。最初の高速な解決策として、最初にすべての挿入をフラッシュしてから、新しい章を開始することができます。フィギュアなどを環境に配置し、環境が機能している最後のページの後でのみ「フラッシュ」したい場合... 2番目の高速な解決策は、環境の後に直接配置することです。したがって、ページを「困らせる」ことはまったくありません(もちろん、脚注の使用は避けてください)。

もう1つの解決策(何らかの方法で自動化する)は少し注意が必要です。「保留中」のマテリアルの挿入場所は、出力ルーチンでページ(「候補」)である垂直リストを作成するときに選択されます。これは、最悪の場合、出力ルーチンで遊ぶ必要があることを意味します。しかし、独自のTeX形式を計画しているのでない限り、多分それは多すぎます。多分LaTeXはより簡単な選択を提供します...

LaTeXコードを少し掘り下げてみると、使用できる条件があります。\@insert*つまり\@insertfalse、と\@inserttrueです。運が良ければ、彼らは挿入を入れる可能性を「駆り立てる」ので、あなたの環境の最初と\@insertfalse最後に言うことができます\@inserttrue試してみてください、私はそれがうまくいくと言っているのではありません。

@を文字のcatcodeとして使用して「コマンド」名の一部にできることを知っているかもしれませんが、終了時に使用する必要が\makeatletterあり\makeatotherます(デフォルトのクラス/スタイルのプリアンブルがそれを行う可能性があります)。

また、問題(の一部)を解決できるplaceinsと思われるスタイル(すでにインストールに含まれている可能性があります。それ以外の場合は、ここを参照)を確認することを繰り返すこともできます。

于 2010-06-13T15:28:26.100 に答える