Narzędzia osobiste

Jesteś w: bachotex2007-pawel-jackowski-pearl1.tex

# bachotex2007-pawel-jackowski-pearl1.tex

bachotex2007-pawel-jackowski-pearl1.tex — TeX document, 2 KB (2743 bytes)

## Zawartość pliku

%%% Custom overfull text

% How to replace a black overfull rule at the end of too long lines
% of a paragraph?

% Well, there is no a direct way to do so, but one should never underestimate
% \TeX's bells and whistles. First of all, we can test if the last (h)box was
% overfull by checking the value of \badness; if it is larger then 10000 it
% definitely means that the box was overfull (\badness never exceeds 10000 for
% underfull boxes). Assuming that \box0 is the box we want to test, we can say

\def\ooops{\hbox to\wd0{\setbox0=\hbox to\wd0{\unhbox0}% reset the box to get \badness

% And how to get the box that is the line of a paragraph? By setting of the
% \interlinepenalty parameter to a strongly negative value we can force a page
% break between every two lines of a paragraph. In the \output routine, we can
% recognize those special penalties via the \outputpenalty parameter. The
% \output routine is not necessarily supposed to \shipout the page -- it may
% simply return all its content back to the recent contributions'.

\interlinepenalty=-50000 % force the break between each two lines
\maxdeadcycles=50        % allow upto 50 \outputs with no \shipout
\newtoks\orioutput
\orioutput=\output       % wrap the original \output routine

\output
{\ifnum\outputpenalty>-20000 \the\orioutput
\else \ifnum\outputpenalty<-\maxdimen \the\orioutput
\else
\unvbox255        % flush the entire list back
\setbox0=\lastbox % strip the very last box
\nointerlineskip  % avoid doubled interline glue
\ooops            % make the test and return the box back.
\penalty\outputpenalty % weak lie that nothing happened...
\fi\fi}

\hfuzz=\maxdimen % no overfullrule, no messages
\hsize=2.5in     % provoke overfulls
This completely useless example shows a not-so-useless trick, which might be
used for quite advanced applications, such as line-numbering, some kind of
paragraph decoration, page optimization and probably many others. Things
become much more complicated if math displays, {\tt\string\marks}, {\tt\string\marks}
or {\tt\string\vadjusts} come into play, but they don't spoil all of the game.\par
% compare with:
\interlinepenalty=0 \hfuzz=0pt
This completely useless example shows a not-so-useless trick, which might be
used for quite advanced applications, such as line-numbering, some kind of
paragraph decoration, page optimization and probably many others. Things
become much more complicated if math displays, {\tt\string\marks}, {\tt\string\marks}
or {\tt\string\vadjusts} come into play, but they don't spoil all of the game.\par

\end
`

Akcje Dokumentu