views:

1878

answers:

6

Given LaTeX likeso:

\section{Heading}

Here is some text after the heading.

How could one prevent the Heading from showing up at the very bottom of the page?

In other words, how could one prevent a page-break after Heading and before the following text?

This seems to be happening in a document that I've got. If there's more information that would be helpful, I'd be happy to post more of the entire LaTeX document.

Thanks!

+4  A: 

I once had a similar problem and used a tip also found here:

\widowpenalty=1000
\clubpenalty=1000
André
Which also prevents single lines from long paragraphs being stranded at the top or bottom of a page. There is some chance of this causing other weird layout decisions, but all it has every done too me was generate big chunks of whitespace... +1
dmckee
+2  A: 

Have a look at these pages in the TeX FAQ:

What I normally do is add a \clearpage to force a page break where necessary, or add \enlargethispage{\baselineskip} to increase the height of the current page by one line, or \enlargethispage{-\baselineskip} to reduce the height of the page. But, it's best to leave these kinds of cosmetic changes until the document content is complete, to avoid continually readjusting the layout while you're editing the document.

ChrisN
+3  A: 

This should never happen with the standard document classes (and the better-known ones such as memoir and koma). Are you using a homegrown document class or redefining the \section command yourself?

Will Robertson
Using \documentclass[oneside,12pt]{article}. Was thinking of moving to memoir- this might push me more. :) Thanks.
Brian M. Hunt
Problem went away with the Memoir class.
Brian M. Hunt
+6  A: 

As Will Robertson says, this really should not be happening with standard document classes and packages. You might like to try redefining the sectioning commands with the titlesec package; I usually do this anyway to get the section heading styles I want, and titlesec has features to control the breaking and positioning of section headings.

The other suggestions regarding \widowpenalty and enlarging the page are not helpful here; they're for problems with regular flowing text, and section headings mess up the normal flow with their spacing commands.

Edit: What's probably happening is that you have a chapter with non-text material that's forcing TeX to choose the "least bad" break it can, which in this case happens to be splitting a section heading from its contents; this is Really Bad, but if it's the only option it's the only option. Usually this is caused by floats; if you have floats near the problem heading, you may try playing with them. Or not playing with them; LaTeX floats are dread beasts only the bravest dare do true battle with.

For a quick fix, you can try the titlesec package as I mentioned earlier. The titlesec manual gives (section 9.2, page 26 of 27) titlesec versions of the standard LaTeX headings. The LaTeX sectioning commands are well known to be ugly, internally and externally (the non-chapter headings aren't so bad, but the rumor that the standard classes were designed to be so ugly that people would be obligated to create their own classes exists for a reason). Paste the following into your preamble (before \begin{document}) and see if it helps after rerunning LaTeX until it stabilizes:

\usepackage{titlesec}
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\Huge}
\titleformat{\section}
{\normalfont\Large\bfseries}{\thesection}{1em}{}
\titleformat{\subsection}
{\normalfont\large\bfseries}{\thesubsection}{1em}{}
\titleformat{\subsubsection}
{\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
\titleformat{\paragraph}[runin]
{\normalfont\normalsize\bfseries}{\theparagraph}{1em}{}
\titleformat{\subparagraph}[runin]
{\normalfont\normalsize\bfseries}{\thesubparagraph}{1em}{}
\titlespacing*{\chapter} {0pt}{50pt}{40pt}
\titlespacing*{\section} {0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
\titlespacing*{\subsection} {0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\titlespacing*{\subsubsection}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\titlespacing*{\paragraph} {0pt}{3.25ex plus 1ex minus .2ex}{1em}
\titlespacing*{\subparagraph} {\parindent}{3.25ex plus 1ex minus .2ex}{1em}

With those definitions in place, your section headings should look just about identical, but internally be generated by titlesec's cleaner code, and hopefully exhibit saner behavior. Without seeing the document in question it's hard to predict if they'll help or not, but the fix is easy enough that it's worth a shot. Also, this exposes the commands' definitions for tweaking -- if you adjust the spacing values for \section in that block I'm sure you'll be able to find something that works (but it might be even uglier than the broken header!). You can also get ambitious and try defining your own heading styles, but this is 1) a waste of time for documents shorter than book length and 2) likely to go horribly wrong without some experience in typography and/or design.

Hope that helps.

kquinn
I had understood that this wouldn't happen, either. Alas, I was wrong. I'd be mighty appreciative for suggestions as to where to start looking to figure out what's going on.
Brian M. Hunt
I've added a lengthy edit that gives a potential fix using `titlesec`; I'd have posted it as a comment, but this 300-character limit annoys me to no end.
kquinn
+2  A: 

Here is an example to show that this shouldn't happen by default. Perhaps you can try and create something similar based on your document to demonstrate the problem on your end, although I do understand that these can be tricky problems to reproduce and debug.

In the following example, we've got twenty-five lines of text preceding a section title. Uncomment the \oneline to add just one line of text and -- despite the fact that it could fit if the amount of text below the section title was reduced -- the entire section heading is pushed to the next page to avoid the problem you're encountering in your own document.

\documentclass[oneside,12pt]{article}
\def\oneline{%
  text text text text abc def ghi text 
  text text text text abc def ghi text 
  text
}
\def\fiveline{\oneline\oneline\oneline\oneline\oneline\par}
\def\twentyfiveline{\fiveline\fiveline\fiveline\fiveline\fiveline}
\begin{document}
\section{one}
\twentyfiveline
%\oneline
\section{two}
\twentyfiveline
\end{document}
Will Robertson
+1  A: 

In case you have completed editing the latex file or if you are positive that the position of the heading(right now at the bottom of the page) is not going to change, you can include a pagebreak before the \section{}. I know this is crude, but it's a quick fix.