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