Page breaks within moderncv
I believe you answered your question yourself Regent :)
In regular circumstances, you do not want the explanation / itemization that goes with a cv entry to be broken up across page. It makes reading your resume and understanding your career achievements harder, which should be avoided at all costs. So in most cases, you simply put your itemize
environment inside the last argument of \cventry
For special cases where you explicitly do want to split the explanation / itemize
over 2 pages, you put it after the \cventry
command.
Finally, note that in these special cases and when using the classic
or casual
styles, you will have to do the left padding yourself. An (ugly) way around this is to manually break your input over 2 \cventry
or \cvitem
.
I just discovered this problem today and ended up implementing a custom version of the \cventry
command (dubbed \cventrylong
) along with a customized itemize list environment cvitemize
(via enumitem
package):
% customize the enumerate environments (i.e. enumerate, itemize, ...)
\usepackage{enumitem}
\setlist{nolistsep}
% A custom version of the \cventry command that supports large itemized lists
% inside argument #7 (the custom cvitemize lists should be used!)
\newcommand*{\cventrylong}[7][.25em]{%
\begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
\raggedleft\hintstyle{#2} &{%
{\bfseries#3}%
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
\ifthenelse{\equal{#5}{}}{}{, #5}%
\ifthenelse{\equal{#6}{}}{}{, #6}%
}%
\end{tabular}%
{\small#7}%
\par\addvspace{#1}}
% A custom version of the itemize environment that sets the appropriate left
% margin for use inside \cventylong
\newlist{cvitemize}{itemize}{1}
\setlist[cvitemize]{label=\labelitemi,%
leftmargin=\hintscolumnwidth+\separatorcolumnwidth+\labelwidth+\labelsep}
Using a trimmed version of template.tex
provided by the moderncv
package, I can demonstrate the results:
Before:
After:
Many document classes (notably, the standard classes article
, book
, and report
, the KOMA-Script classes, memoir
, and the AMS classes) include the code lines
\@lowpenalty=51
and
\@itempenalty=-\@lowpenalty
i.e., they set \@itempenalty
to -51 and hereby encourage page breaks between list items. The moderncv
class, however, only includes the second code line, i.e., the class sets \@itempenalty
implicitly to 0. I don't know if this was done on purpose or should be considered a bug. However, try to add the following to your document preamble (EDIT: stupid mistake corrected):
\makeatletter
\@itempenalty=-51
\makeatother