summaryrefslogtreecommitdiff
path: root/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-nopagebrk.html
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-doc/doc/english/FAQ-en/html/FAQ-nopagebrk.html')
-rw-r--r--Master/texmf-doc/doc/english/FAQ-en/html/FAQ-nopagebrk.html111
1 files changed, 111 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-nopagebrk.html b/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-nopagebrk.html
new file mode 100644
index 00000000000..c1555b648cd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-nopagebrk.html
@@ -0,0 +1,111 @@
+<head>
+<title>UK TeX FAQ -- question label nopagebrk</title>
+</head><body>
+<h3>Preventing page breaks between lines</h3>
+<p>One commonly requires that a block of typeset material be kept on the
+same page; it turns out to be surprisingly tricky to arrange this.
+<p>LaTeX provides a <code>samepage</code> environment which claims it
+does this sort of thing for you. It proceeds by setting infinite
+penalties for all sorts of page-break situations; but in many
+situations where you want to prevent a page break,
+<code>samepage</code> doesn't help. If you're trying to keep running
+text together, you need to end the paragraph inside the environment
+(see <a href="FAQ-paraparam.html">preserving paragraph parameters</a>).
+Also, if the things you are trying to keep together insert their own
+pagebreak hints, <code>samepage</code> has no power over them: a good
+exaple is list items - they suggest page breaks between them. Even
+if <code>samepage</code> <em>does</em> work, it's likely to leave stuff
+jutting out at the bottom of the page.
+<p>A convenient trick is to set all the relevant stuff in a <code>\</code><code>parbox</code>
+(or a <code>minipage</code> if it contains things like verbatim text
+that may not be in the argument of a <code>\</code><code>parbox</code>). The resulting box
+certainly <em>won't</em> break between pages, but that's not to say that
+it will actually do what you want it to do: again, the box may be left
+jutting out at the bottom of the page.
+<p>Why do neither of these obvious things work? Because TeX can't
+really distinguish between infinitely awful things.
+<code>Samepage</code> will make any possible break point "infinitely
+bad" and boxes don't even offer the option of breaks, but if the
+alternative is the leave an infinitely bad few centimetres of blank
+paper at the bottom of the page, TeX will take the line of least
+resistance and do nothing.
+<p>This problem still arises even if you have <code>\</code><code>raggedbottom</code> in
+effect: TeX doesn't notice the value of <em>that</em> until it starts
+actually shipping a page out. One approach is to set:
+<blockquote>
+<pre>
+\raggedbottom
+\addtolength{\topskip}{0pt plus 10pt}
+</pre>
+</blockquote>
+The <code>10pt</code> offers a hint to the output routine that the column is
+stretchable; this will cause TeX to be more tolerant of the need to
+stretch while building the page. If you're doing this as a temporary
+measure, cancel the change to <code>\</code><code>topskip</code> by:
+<blockquote>
+<pre>
+\addtolength{\topskip}{0pt plus-10pt}
+</pre>
+</blockquote>
+as well as resetting <code>\</code><code>flushbottom</code>. (Note that the <code>10pt</code> never
+actually shows up, because it is overwhelmed when the page is shipped
+out by the stretchability introduced by <code>\</code><code>raggedbottom</code>; however, it
+could well have an effect if <code>\</code><code>flushbottom</code> was in effect.)
+<p>An alternative (which derives from a suggestion by Knuth in the
+TeXbook) is the package <i>needspace</i> or the <i>memoir</i>,
+which both define a command <code>\</code><code>needspace</code> whose argument tells it
+what space is needed. If the space isn't available, the current page
+is cleared, and the matter that needs to be kept together will be
+inserted on the new page. For example, if 4 lines of text need to be
+kept together, the sequence
+<blockquote>
+<pre>
+\par
+\needspace{4\baselineskip}
+% the stuff that must stay together
+&lt;text generating lines 1-4&gt;
+% now stuff we don't mind about
+</pre>
+</blockquote>
+Yet another trick by Knuth is useful if you have a sequence of small
+blocks of text that need, individually, to be kept on their own page.
+Insert the command <code>\</code><code>filbreak</code> before each small block, and the
+effect is achieved. The technique can be used in the case of
+sequences of LaTeX-style sections, by incorporating <code>\</code><code>filbreak</code>
+into the definition of a command (as in
+<a href="FAQ-patch.html">patching commands</a>). A simple and effective
+patch would be:
+<blockquote>
+<pre>
+\let\oldsubsubsection=\subsubsection
+\renewcommand{\subsubsection}{%
+ \filbreak
+ \oldsubsubsection
+}
+</pre>
+</blockquote>
+While the trick works for consecutive sequences of blocks, it's
+slightly tricky to get out of such sequences unless the sequence is
+interrupted by a forced page break (such as <code>\</code><code>clearpage</code>, which may
+be introduced by a <code>\</code><code>chapter</code> command, or the end of the document).
+If the sequence is not interrupted, the last block is likely to be
+forced onto a new page, regardless of whether it actually needs it.
+<p>If one is willing to accept that not everything can be accomplished
+totally automatically, the way to go is to typeset the document and to
+check for things that have the potential to give trouble. In such a
+scenario (which has Knuth's authority behind it, if one is to believe
+the rather few words he says on the subject in the TeXbook) one can
+decide, case by case, how to deal with problems at the last
+proof-reading stage. The alternatives are to insert <code>\</code><code>clearpage</code>
+commands as necessary, or to use <code>\</code><code>enlargethispage</code>. Supposing you
+have a line or two that stray: issue the command
+<code>\</code><code>enlargethispage{2<code>\</code><code>baselineskip</code>}</code> and two lines are
+added to the page you're typesetting. It depends on the document
+whether this looks impossibly awful or entirely acceptable, but the
+command remains a useful item in the armoury.
+<dl>
+<dt><tt><i>memoir.cls</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/memoir.zip">macros/latex/contrib/memoir</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/memoir.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/memoir/">browse</a>)
+<dt><tt><i>needspace.sty</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/misc/needspace.sty">macros/latex/contrib/misc/needspace.sty</a>
+</dl>
+<p><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=nopagebrk">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=nopagebrk</a>
+</body>