0

In the next example i have a paragraph and some code that should both be placed on the same page:

In the following example we show something:
\begin{minipage}{\linewidth}
\begin{lstlisting}
 this
  is
   a
  few
 lines
of code
\end{lstlisting}
\end{minipage}

The problem is that LaTeX insert a line break at this point. Instead i would prefer it to break the page before this paragraph begins. I've tried \\, \\* and \nopagebreak etc, but no luck. It either places the minipage inline (so that it floats in the middle of my page) or it puts in on the next page.

Edit: a more complete example:

\documentclass[paper=a4, fontsize=11pt,twoside]{scrartcl}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{listings}

\begin{document}


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus velit mauris, mattis eget vehicula et, blandit scelerisque augue. Curabitur porttitor scelerisque consequat. Sed convallis in dui in elementum. Donec mollis tristique nisi vitae lacinia. Cras ullamcorper dolor urna, id lacinia augue euismod ut. Nam nec accumsan dolor. Etiam non ornare nisl, non consequat risus. Morbi sodales ornare magna at consequat. Aliquam feugiat suscipit egestas.

Aenean a leo ante. Nulla luctus interdum suscipit. Maecenas eu pharetra dolor. Vestibulum molestie in nibh non bibendum. In hac habitasse platea dictumst. Fusce at metus ac nisi rutrum accumsan et ac sem. Pellentesque pulvinar quis arcu id volutpat.

Aenean quis erat fermentum augue feugiat viverra. Etiam auctor arcu non massa condimentum porta. Nam vitae vulputate massa. Etiam consectetur, risus ac dignissim efficitur, nulla mauris mollis mi, a lobortis lacus nisi ac leo. Sed quis tempor nibh. Vestibulum id porta libero. Curabitur et lobortis dolor, a pharetra erat. Ut et ligula ultrices, ultricies dolor vel, molestie dui. Fusce iaculis at nisi a tincidunt. Aliquam tristique condimentum justo in pellentesque. Pellentesque euismod augue ut justo ultricies sodales. Pellentesque viverra convallis tellus egestas vestibulum. Curabitur feugiat imperdiet ante nec ultrices. Ut et posuere lorem. Ut pretium libero a varius dictum.

Nam vitae tellus malesuada orci lobortis laoreet. Etiam semper sem vel ex vestibulum accumsan. Phasellus vel gravida nibh. Cras quis nisi at ligula hendrerit euismod porttitor sed lorem. Donec eu cursus nisl. Morbi consequat orci vel tortor dictum, vel efficitur est maximus. Integer consectetur dui vitae nulla mollis egestas. Aliquam a augue in nibh iaculis volutpat. Sed a egestas neque, ac varius elit. Vestibulum malesuada ante ipsum, vel imperdiet nibh facilisis quis. Cras tristique enim vitae augue elementum, rutrum suscipit dui fringilla. Etiam pellentesque nisi at dolor ornare efficitur. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec eget velit nec massa suscipit ultrices. Integer et sagittis enim.

Ut tellus mi, viverra eget iaculis nec, sagittis at felis. Etiam non est quam. Praesent pulvinar varius egestas. Aenean ut odio ac mi sagittis rutrum. Nam volutpat, velit sed tempus mollis, augue nibh scelerisque dui, eget semper ex neque vel augue. Nulla posuere faucibus lorem, at ultricies nisl placerat non. Fusce cursus pellentesque porta. Curabitur sit amet ultricies nulla. Curabitur vitae congue enim. Suspendisse potenti. In nulla erat, porttitor vel dolor at, finibus malesuada turpis.

Pellentesque quis neque efficitur, egestas ex ut, cursus ante. Ut fermentum turpis at mi feugiat, nec blandit neque egestas. Nam viverra leo turpis. Vestibulum et malesuada diam. Quisque at posuere metus. Praesent quis elit ac enim tincidunt finibus. Curabitur sit amet metus diam. Sed sit amet nibh ac elit consequat ultricies sed at lorem.

Pellentesque a libero lectus. Ut neque velit, elementum et est ut, tincidunt venenatis nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla eleifend, erat et vulputate congue, tortor tortor hendrerit nulla, vulputate hendrerit massa ligula sit amet augue.

Maecenas rhoncus nec eros sit amet sodales. Vestibulum a gravida neque. Nunc. \\*
\begin{minipage}{\linewidth}
\begin{lstlisting}
 this
  is
   a
  few
 lines
of code
\end{lstlisting}
\end{minipage}

\end{document}

The problem is that there is a new page between the last paragraph (Maecenas rhoncus) and the minipage. I would want the last paragraph to be moved down to the next page.

  • it is very hard to comment on such a small fragment which can not be run to reproduce the problem, but why not just put the text inside the minipage? – David Carlisle Oct 6 '16 at 17:59
  • @DavidCarlisle That's a very good idea, however it result in my minipage to be jumped in, as well as the paragraph to have no indent, i can remove the minipage indent with \noindent but cannot fix the missing indent with \indent, it gives errors if i use that. Anyway i've provided a more complete example. The docs say \\* should have worked. – Dorus Oct 6 '16 at 19:49
  • you can set \parindent to something non zero in the minipage, but if you've provided an example I'll try that.... – David Carlisle Oct 6 '16 at 19:52
1

perhaps the easiest thing is to use \nopagebreak

\documentclass[paper=a4, fontsize=11pt,twoside]{scrartcl}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{listings}

\begin{document}


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus velit mauris, mattis eget vehicula et, blandit scelerisque augue. Curabitur porttitor scelerisque consequat. Sed convallis in dui in elementum. Donec mollis tristique nisi vitae lacinia. Cras ullamcorper dolor urna, id lacinia augue euismod ut. Nam nec accumsan dolor. Etiam non ornare nisl, non consequat risus. Morbi sodales ornare magna at consequat. Aliquam feugiat suscipit egestas.

Aenean a leo ante. Nulla luctus interdum suscipit. Maecenas eu pharetra dolor. Vestibulum molestie in nibh non bibendum. In hac habitasse platea dictumst. Fusce at metus ac nisi rutrum accumsan et ac sem. Pellentesque pulvinar quis arcu id volutpat.

Aenean quis erat fermentum augue feugiat viverra. Etiam auctor arcu non massa condimentum porta. Nam vitae vulputate massa. Etiam consectetur, risus ac dignissim efficitur, nulla mauris mollis mi, a lobortis lacus nisi ac leo. Sed quis tempor nibh. Vestibulum id porta libero. Curabitur et lobortis dolor, a pharetra erat. Ut et ligula ultrices, ultricies dolor vel, molestie dui. Fusce iaculis at nisi a tincidunt. Aliquam tristique condimentum justo in pellentesque. Pellentesque euismod augue ut justo ultricies sodales. Pellentesque viverra convallis tellus egestas vestibulum. Curabitur feugiat imperdiet ante nec ultrices. Ut et posuere lorem. Ut pretium libero a varius dictum.

Nam vitae tellus malesuada orci lobortis laoreet. Etiam semper sem vel ex vestibulum accumsan. Phasellus vel gravida nibh. Cras quis nisi at ligula hendrerit euismod porttitor sed lorem. Donec eu cursus nisl. Morbi consequat orci vel tortor dictum, vel efficitur est maximus. Integer consectetur dui vitae nulla mollis egestas. Aliquam a augue in nibh iaculis volutpat. Sed a egestas neque, ac varius elit. Vestibulum malesuada ante ipsum, vel imperdiet nibh facilisis quis. Cras tristique enim vitae augue elementum, rutrum suscipit dui fringilla. Etiam pellentesque nisi at dolor ornare efficitur. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec eget velit nec massa suscipit ultrices. Integer et sagittis enim.

Ut tellus mi, viverra eget iaculis nec, sagittis at felis. Etiam non est quam. Praesent pulvinar varius egestas. Aenean ut odio ac mi sagittis rutrum. Nam volutpat, velit sed tempus mollis, augue nibh scelerisque dui, eget semper ex neque vel augue. Nulla posuere faucibus lorem, at ultricies nisl placerat non. Fusce cursus pellentesque porta. Curabitur sit amet ultricies nulla. Curabitur vitae congue enim. Suspendisse potenti. In nulla erat, porttitor vel dolor at, finibus malesuada turpis.

Pellentesque quis neque efficitur, egestas ex ut, cursus ante. Ut fermentum turpis at mi feugiat, nec blandit neque egestas. Nam viverra leo turpis. Vestibulum et malesuada diam. Quisque at posuere metus. Praesent quis elit ac enim tincidunt finibus. Curabitur sit amet metus diam. Sed sit amet nibh ac elit consequat ultricies sed at lorem.

Pellentesque a libero lectus. Ut neque velit, elementum et est ut, tincidunt venenatis nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla eleifend, erat et vulputate congue, tortor tortor hendrerit nulla, vulputate hendrerit massa ligula sit amet augue.

Maecenas rhoncus nec eros sit amet sodales. Vestibulum a gravida neque. Nunc.

\nopagebreak
\noindent\begin{minipage}[t]{\linewidth}
\begin{lstlisting}
 this
  is
   a
  few
 lines
of code
\end{lstlisting}
\end{minipage}

\end{document}
  • This works, but the paragraph in my real document is actually 2 lines long (144 chars instead of the 78 from Maecenas rhoncus), it now breaks this 2 line paragraph over 2 pages in the middle of the sentence. Is there a way to prevent that also? – Dorus Oct 6 '16 at 20:06
  • you want the whole paragraph to keep together? if so put it in the minipage preceded by \setlength\parindent{15pt}% or whatever @Dorus – David Carlisle Oct 6 '16 at 20:07
  • Yeah that was the other solution i was looking as you hinted at before. I did have to add \noindent before the minipage and use \parindent{11pt} but other that that it seems to work. – Dorus Oct 6 '16 at 20:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.