TransWikia.com

How can one keep a section from being at the end of a page?

TeX - LaTeX Asked by Brian M. Hunt on August 11, 2021

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.

9 Answers

This should rarely 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?

Correct answer by Will Robertson on August 11, 2021

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

widowpenalty=1000
clubpenalty=1000

Answered by André on August 11, 2021

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.

Answered by ChrisN on August 11, 2021

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]
{normalfonthugebfseries}{chaptertitlename thechapter}{20pt}{Huge}
titleformat{section}
{normalfontLargebfseries}{thesection}{1em}{}
titleformat{subsection}
{normalfontlargebfseries}{thesubsection}{1em}{}
titleformat{subsubsection}
{normalfontnormalsizebfseries}{thesubsubsection}{1em}{}
titleformat{paragraph}[runin]
{normalfontnormalsizebfseries}{theparagraph}{1em}{}
titleformat{subparagraph}[runin]
{normalfontnormalsizebfseries}{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.

Answered by kquinn on August 11, 2021

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}
defoneline{%
  text text text text abc def ghi text 
  text text text text abc def ghi text 
  text
}
deffiveline{onelineonelineonelineonelineonelinepar}
deftwentyfiveline{fivelinefivelinefivelinefivelinefiveline}
begin{document}
section{one}
twentyfiveline
%oneline
section{two}
twentyfiveline
end{document}

Answered by Will Robertson on August 11, 2021

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.

Answered by abhinav on August 11, 2021

It will never happen if you do not put the blank line (which is equivalent to a paragraph break in TeX/LaTeX) between the section command (i.e., section{Heading}) and the text that follows it. Instead of what you have typed, including a blank line, viz.,

section{Heading}

Here is some text after the heading.

type

section{Heading}
Here is some text after the heading.

Alternatively, if you think that a blank line helps you guide your eyes when you are editing, type

section{Heading} 
%
Here is some text after the heading.

Answered by P. B. Pal on August 11, 2021

You should use the option

usepackage[nobottomtitles*]{titlesec}

This will prevent your heading titles to be displayed at the bottom of the page and it will place your heading in the next page.

Answered by Palamos on August 11, 2021

A simple and robust way to handle these problems is to use the needspace{<length>} command, which is available in the needspace package and also provided by the memoir class.

The command will check wheather the provided <length> is available as vertical space on the current page/in the current column - if not, it will flush whatever comes after to a new page/column.

Example:

documentclass{article}
usepackage{needspace}

begin{document}

Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua.

needspace{2 baselineskip}
section{My heading}

Paragraph text which should be on the same page/in the same column as the heading above.

end{document}

You could provide the needspace command manually as above, or incorporate it into the section command by re-defining it or by some other means.

If you use the memoir class, a few high-level commands are available to achieve this, e.g. setsecheadstyle. In the preamble, use e.g. the following:

setsecheadstyle{%
needspace{3.0 baselineskip}%
Large% heading formatting
}

Answered by Carl on August 11, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP