我怎样才能禁止在‘\\’处分页?

我怎样才能禁止在‘\\’处分页?

我如何禁止在 处分页\\?我试过\\*,有时有效,有时无效。

这是一个不起作用的例子:

\documentclass{article}

\usepackage{geometry}
\geometry{textheight=2cm}

\begin{document}

1st line

2nd line

% Expected page break is here

3rd line\\*
4th line\\*% This line is on the 1st page
5th line% But this line appears on the 2nd page

\end{document}

我想\\在文件格式描述中使用。我不能使用verbose或,lstlisting因为我想插入特殊元素。这是一个简化的示例:

\documentclass{article}

\usepackage{textcomp}

\newcommand{\meta}[1]{\textnormal{#1}}
\newcommand{\variable}[1]{\textnormal{\textlangle\textit{#1}\textrangle}}
\newenvironment{file}{\begin{quote}\normalfont\ttfamily}{\end{quote}}

\begin{document}

\begin{file}
  [\variable{section}]\\
  \variable{key} = \variable{value}\\
  \variable{key} = \variable{value}\\
  \meta{...}
\end{file}

\end{document}

答案1

\\*在此时添加 100000(无限)的惩罚以打破这一点,但如果其他东西允许打破,或者没有其他选择,它可以被覆盖。在这种情况下,垂直列表看起来像

....\glue(\rightskip) 0.0
...\penalty 10000
...\penalty 150
...\glue(\baselineskip) 5.05556

因此,10000 之后立即是 150 的寡妇惩罚,这是为了阻止此时突破,但在这种情况下允许休息。

在文档中,除了对齐之外使用几乎\\总是错误的,所以这通常不是问题,但如果你绝对不想让文本块中断,请将其放在一个框中:

\documentclass{article}

\usepackage{geometry}
\geometry{textheight=2cm}

\begin{document}
%\showoutput
1st line

2nd line

% Expected page break is here

\noindent\parbox[t]{\textwidth}{%
3rd line\\*
4th line\\*% This line is on the 1st page
5th line% But this line appears on the 2nd page
}

\end{document}

在这种情况下,所有内容都适合在页面上。

答案2

您的情况是段落内出现简单的分页符。这不是最佳选择,但是,如果将整个段落移至下一页,则第一页会太空(因此会受到惩罚)。

在您的情况下,要解决这个问题,您可以把下一页单行的惩罚设置为一个大数字,参见如何防止出现孤儿线

\widowpenalty10000

相关内容