![如果页面不适合,请避免使用文本](https://linux22.com/image/360792/%E5%A6%82%E6%9E%9C%E9%A1%B5%E9%9D%A2%E4%B8%8D%E9%80%82%E5%90%88%EF%BC%8C%E8%AF%B7%E9%81%BF%E5%85%8D%E4%BD%BF%E7%94%A8%E6%96%87%E6%9C%AC.png)
前段时间,我发了一个问题,如果由于页面限制而导致段落中断,是否强制创建新页面。这个问题通过一个完美的答案解决了。但是,除了将文本拆分到新页面中,是否可以完全忽略它?这意味着,如果段落不适合,是否可以跳过整个段落?
这是当前的代码(抱歉,定义有些奇怪)
\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}
}
%------------------------
% 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}
答案1
\printifspace
好吧,这里有一个想法。我省略了您的字体自定义等,只解决了删除跨两页的段落的问题。如果剩余空间足够,参数将进入当前页面;否则,它将被删除。
\documentclass{article}
\usepackage{lipsum,lmodern,calc,ifthen,pgffor}
% determine how much space is left on the current page
\newcommand*\measurepage{\dimexpr\pagegoal-\pagetotal\relax}
\newsavebox{\mybox}
\newlength{\boxheight}
% put content in a savebox to determine if it fits onto the page.
% if it does, typeset it; if not, ignore it and move on to next page.
\newcommand{\printifspace}[1]{%
\sbox{\mybox}{\parbox{\textwidth}{#1\par\medskip\par}}%
\setlength{\boxheight}{\ht\mybox+\dp\mybox}%
\ifthenelse{\boxheight<\measurepage}%
{\usebox{\mybox}\par}%
{\typeout{dropped an overflowing chunk}\clearpage}%
}
\begin{document}
\foreach \x in {1,2,...,20}{\printifspace{\x: \lipsum[\x]}}
\end{document}
使用边距和字体大小的默认设置(至少在我的系统上),第 5、第 11 和第 17 段将被删除。