botinsert

Matous Jan Fialka fialka.tex at seznam.cz
Sun Apr 4 00:52:01 CEST 2004


On 12/02/04 15:37 +0100 or thereabouts, Anton Surda wrote:
>
> Dobry den,

Dobry den :)

Vim, ze je ma reakce ponekud opozdena :)

> \newinsert\botins \newif\if at bot
> \def\topinsert{\@midfalse\@botfalse\p at gefalse\@ins}
> \def\midinsert{\@midtrue\@ins}
> \def\pageinsert{\@midfalse\@botfalse\p at getrue\@ins}
> \def\botinsert{\@midfalse\@bottrue\@ins}
> \skip\topins=0pt minus6pt% space added when a topinsert is present
> \skip\botins=0pt minus6pt% space added when a topinsert is present
> \count\botins=1000 % magnification factor (1 to 1)
> \dimen\botins=\maxdimen % no limit per page
>
> \def\endinsert{\egroup % finish the \vbox
>   \if at mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen at 12\p@
>     \advance\dimen@\pagetotal \advance\dimen at -\pageshrink
>     \ifdim\dimen@>\pagegoal\@midfalse\p at gefalse\@botfalse\fi
>     \dimen at 0\p@ \advance\dimen@\pagetotal \advance\dimen at -\pageshrink
>     \ifdim\dimen@>\pagegoal\@midtrue\fi
>   \fi
>   \if at mid \medskip\bigskip\box\z@\bigbreak
>    \else\if at bot\insert\botins{\penalty 100
>     \splittopskip\z at skip
>     \splitmaxdepth\maxdimen \floatingpenalty\z@
>     \bigskip
>     \box\z@\goodbreak}
>     \else\insert\topins{\penalty100
>     \splittopskip\z at skip
>     \splitmaxdepth\maxdimen \floatingpenalty\z@
>     \ifp at ge \dimen@\dp\z@
>     \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
>     \else \box\z@\nobreak\bigskip\fi}\fi\fi\endgroup}
>
> \def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi
>   \dimen@=\dp\@cclv \unvbox\@cclv
>   \ifvoid\botins\else
>   \unvbox\botins\fi
>   \ifvoid\footins\else
>     \vskip\skip\footins
>     \footnoterule
>     \unvbox\footins\fi
>   \ifr at ggedbottom \kern-\dimen@ \vfil \fi}
> \def\footnoterule{\kern-3\p@
>   \hrule width 2truein \kern 2.6\p@} % the \hrule is .4pt high

Prijde mi to jako upravene makro z tugboat.sty, nebo se pletu? Take mi to
vzdy nefunguje, ale je to rozhodne lepsi nez nic. Kazdopadne, pokud nekdo
zna lepsi zpusob, jak udelat \botinsert, pripojuji se k dotazu :)

Makro z tugboat.sty vypada takto (ty \catcode na zacatku a na konci jsem
pridal ja):

---------------------cut-----------------------
\catcode`@=11

\newif\if at floatable \@floatabletrue
\def\nofloat{\@floatablefalse}

\def\@ins{\begingroup\setbox\z@\vbox\bgroup}

\newinsert\botins
\newif\ifp at ge \newif\if at mid \newif\if at bot
\def\topinsert{\@midfalse\p at gefalse\@botfalse\@ins}
\def\botinsert{\@midfalse\p at gefalse\@bottrue\@ins}
\def\midinsert{\@midtrue\@botfalse\@ins}
\def\pageinsert{\@midfalse\@botfalse\p at getrue\@ins}
\skip\botins=\z at skip
\count\botins=1000
\dimen\botins=\maxdimen
\def\endinsert{\egroup
   \gdef\@next{}%
   \if at mid \dimen@\ht\z@ \advance\dimen@\dp\z@
   \advance\dimen at 12\p@ \advance\dimen@\pagetotal
  \if at floatable
   \ifdim\dimen@>\pagegoal\@midfalse\@botfalse\p at gefalse\fi\fi
   \fi
   \if at mid
      \vskip\abovedisplayskip
      \box\z@
      \vskip\belowdisplayskip
      \gdef\@next{\@asifbelowdisplay}%
   \else\insert\if at bot\botins\else\topins\fi
   {\penalty100
   \if at bot\medskip\nobreak\fi
   \splittopskip\z at skip
   \splitmaxdepth\maxdimen \floatingpenalty\z@
   \ifp at ge \dimen@\dp\z@
   \vbox to\vsize{\unvbox\z@\kern-\dimen@}
   \else \box\z@\fi
   \if at bot\else\medskip\fi
}
\fi\endgroup\@next}

\def\pagecontents{%
   \ifvoid\topins\else\unvbox\topins\fi
   \dimen@=\dp\@cclv \unvbox\@cclv
   \ifr at ggedbottom \kern-\dimen@ \vfil \fi
   \ifvoid\footins\else
      \vskip\skip\footins
      \footnoterule
      \unvbox\footins\fi
   \ifvoid\botins\else
      \vskip\skip\botins
      \unvbox\botins\fi }

\catcode`@=12
----------------------cut------------------------

Krasny den Vam vsem preje,

--
Matou\v{s} Jan Fialka aka Variable computing Prague
---------------------------------------------------
Private E-Mail:         matous_jan.fialka at seznam.cz
Home Page:     http://burdazd.sh.cvut.cz/~socrates/
Linux User Number: 308523 Peace, TeX and GNU/Linux!
---------------------------------------------------



More information about the csTeX mailing list