如果段落中断,如何强制切换到新页面?

如果段落中断,如何强制切换到新页面?

我正在做一个项目,需要从一个 JSON 文件中生成一本书,其中包含数千个用作段落的条目。当我将代码插入 LaTeX 时,一些段落会分成两页。我想知道是否有办法说:“如果段落会断开,则将其全部移到下一页”?

类似的东西\newpage对我而言毫无用处,因为条目太多,无法手动完成。我正在寻找更具程序性的解决方案。我还查看了:

\widowpenalties 1 10000
\raggedbottom

但在我看来,这样做似乎只是扩展文本直到页面完成,而不是将文本传播到新页面。下面是我的代码的简化版本,使用了正在使用的格式:

%------------------------
% Invoke Packages
%------------------------

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{lipsum,lineno}

%------------------------
% Set Dimensions
%------------------------
\usepackage[ 
paperwidth = 168.3mm,
paperheight = 260.4mm,
top = 6mm,
bottom = 7mm,
outer = 6mm,
inner = 20mm
]{geometry}

%------------------------
% Remove indentation from all paragraphs
%------------------------
\setlength\parindent{0pt}

% Comments
\newcommand{\CommentFontSize}{21}
\newcommand{\CommentSkipMult}{25}
% Author
\newcommand{\UserFontSize}{16}
\newcommand{\UserSkipMult}{0}
% Date
\newcommand{\DateFontSize}{15}
\newcommand{\DateSkipMult}{0}

% Comments
\newenvironment{commentTextFont}{
\fontfamily{mdugm} 
\fontsize{\CommentFontSize}{\CommentSkipMult}
\selectfont}
{\par}
% Author
\newenvironment{userFont}{
\fontfamily{mdugm} 
\fontsize{\UserFontSize}{\UserSkipMult}
\selectfont}
{\par}
% Date
\newenvironment{dateFont}{
\fontfamily{mdugm} 
\fontsize{\DateFontSize}{\DateSkipMult}
\selectfont}
{\par}

%------------------------
% Set commands 
%------------------------

\newcommand{\uComment}[3]{
\begin{commentTextFont} #1 \end{commentTextFont}
\vspace*{0.5cm}
\begin{userFont} \textit{#2}
\hspace*{\fill} \begin{dateFont} #3 \end{dateFont}
\end{userFont}
\vspace*{0.8cm}
}

%------------------------
% Document
%------------------------

\begin{document}
\begin{flushleft}

\uComment{\lipsum[73]}{someone}{2000}
\uComment{\lipsum[75]}{someone}{2000}
\uComment{\lipsum[66]}{someone}{2000}

\end{flushleft}
\end{document}

有什么想法可以解决这个问题吗?

答案1

在我看来,您使用的定义非常复杂,可以简化,但解决方案无论如何都很简单:

\newcommand{\uComment}[3]{%
  \filbreak
  \begin{commentTextFont}#1\end{commentTextFont}%
  \vspace*{0.5cm}
  \begin{userFont}\textit{#2}\hspace*{\fill}%
  \begin{dateFont}#3\end{dateFont}\end{userFont}%
  \vspace*{0.8cm}
}

\filbreak在段落前使用了它,意思是:在这里分页,除非\filbreak出现进一步的内容并且中间的文本适合该页面。

这是完整的代码,其中插入的所有虚假空格都已删除。

%------------------------
% Invoke Packages
%------------------------

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{lipsum,lineno}

%------------------------
% Set Dimensions
%------------------------
\usepackage[ 
  paperwidth = 168.3mm,
  paperheight = 260.4mm,
  top = 6mm,
  bottom = 7mm,
  outer = 6mm,
  inner = 20mm
]{geometry}

%------------------------
% Remove indentation from all paragraphs
%------------------------
\setlength\parindent{0pt}

% Comments
\newcommand{\CommentFontSize}{21}
\newcommand{\CommentSkipMult}{25}
% Author
\newcommand{\UserFontSize}{16}
\newcommand{\UserSkipMult}{0}
% Date
\newcommand{\DateFontSize}{15}
\newcommand{\DateSkipMult}{0}

% Comments
\newenvironment{commentTextFont}
 {\fontfamily{mdugm}%
  \fontsize{\CommentFontSize}{\CommentSkipMult}%
  \selectfont}
 {\par}
% Author
\newenvironment{userFont}
 {\fontfamily{mdugm}%
  \fontsize{\UserFontSize}{\UserSkipMult}%
  \selectfont}
 {\par}
% Date
\newenvironment{dateFont}
 {\fontfamily{mdugm}%
  \fontsize{\DateFontSize}{\DateSkipMult}%
  \selectfont}
 {\par}

%------------------------
% Set commands 
%------------------------

\newcommand{\uComment}[3]{%
  \filbreak
  \begin{commentTextFont}#1\end{commentTextFont}%
  \vspace*{0.5cm}
  \begin{userFont}\textit{#2}\hspace*{\fill}%
  \begin{dateFont}#3\end{dateFont}\end{userFont}%
  \vspace*{0.8cm}
}

%------------------------
% Document
%------------------------

\begin{document}

\raggedright

\uComment{\lipsum[73]}{someone}{2000}
\uComment{\lipsum[75]}{someone}{2000}
\uComment{\lipsum[66]}{someone}{2000}

\end{document}

分页符的图片。

在此处输入图片描述

相关内容