我正在排版一份包含长itemize
列表的文档,大多数情况下,LaTeX 会在环境前留出大量空白,以便将其完全放在一页上。
我怎样才能让 LaTeX 在列表内放置分页符?
更新:我发现当不在\cventry
命令中使用时它也能正常工作。
有没有办法修复\cventry
定义以避免不破坏行为?
从moderncvstylebanking.sty
:
\renewcommand*{\cventry}[7][.25em]{
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}%
{\bfseries #4} & {\bfseries #5} \\%
{\itshape #3\ifthenelse{\equal{#6}{}}{}{, #6}} & {\itshape #2}\\%
\end{tabular*}%
\ifx&%
\else{\\\vbox{\small#7}}\fi%
\par\addvspace{#1}}
例子:我原来是\cventry
这样使用的:
\cventry{March 2009--April 2011}{Software Developer}{Company}{City}{}{
\begin{itemize}
\item Item 1;
% Lots of items here
\item Item n.
\end{itemize}
}
可能我只是误用了,\cventry
因为使用以下内容就可以了:
\cventry{March 2009--April 2011}{Software Developer}{Company}{City}{}{}
\begin{itemize}
\item Item 1;
% Lots of items here
\item Item n.
\end{itemize}
答案1
我相信你自己已经回答了你的问题,摄政王:)
在一般情况下,您不希望简历条目附带的解释/条目分散在各个页面上。这会使阅读简历和了解您的职业成就变得更加困难,应不惜一切代价避免这种情况。因此,在大多数情况下,您只需将您的itemize
环境放在\cventry
对于您明确希望将说明 / 拆分itemize
为 2 页的特殊情况,请将其放在\cventry
命令后面。
最后,请注意,在这些特殊情况下以及使用classic
或casual
样式时,您必须自己进行左填充。解决这个问题的一个(丑陋的)方法是手动将您的输入拆分为 2\cventry
或\cvitem
。
答案2
我今天才发现这个问题,并最终实现了该\cventry
命令的自定义版本(称为\cventrylong
)以及自定义的 itemize list 环境cvitemize
(通过enumitem
包):
% 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}
template.tex
使用包提供的修剪版本moderncv
,我可以演示结果:
前:
后:
答案3
许多文档类(特别是标准类article
、book
和report
、KOMA-Script 类、memoir
和 AMS 类)都包含代码行
\@lowpenalty=51
和
\@itempenalty=-\@lowpenalty
即,它们设置\@itempenalty
为 -51,从而鼓励在列表项之间进行分页。moderncv
但是,该类仅包含第二行代码,即该类隐式设置\@itempenalty
为 0。我不知道这是故意为之还是应该被视为错误。但是,请尝试将以下内容添加到您的文档序言中(编辑:纠正了愚蠢的错误):
\makeatletter
\@itempenalty=-51
\makeatother
答案4
为了补充@Xavier 的回答,我在这里发布了一个自定义环境的代码,它模仿了for和主题mcvitemize
的行为。\cventry
classic
casual
\newenvironment{mcvitemize}
{%
\addtolength{\leftmargini}{\dimexpr\hintscolumnwidth+\separatorcolumnwidth}
\small
\begin{itemize}
}{%
\end{itemize}
}
其中\addtolength{\leftmargini}{\dimexpr\hintscolumnwidth+\separatorcolumnwidth}
控制项目的左填充。\hintscolumnwidth
和\separatorcolumnwidth
是类定义的长度modenrcv
。
要使用它,只需将代码添加到序言中,然后执行
\cventry{March 2009--April 2011}{Software Developer}{Company}{City}{}{}
\begin{mcvitemize}
\item Item 1;
% Lots of items here
\item Item n.
\end{mcvitemize}