在小页面之间插入行但不在页面末尾插入行

在小页面之间插入行但不在页面末尾插入行

我正在编写一个 PHP 脚本来写入.tex文件。

基于此插入水平切割线,我想在一页上“打印”多个块,并且在块之间画一条“切割线”。

但我不想在页面底部画一条切割线。

脚本写道:

  • 堵塞
  • 线
  • 堵塞
  • 线
  • 堵塞
  • ...

对于这个例子,我使用minipage避免破坏“块”并在这些“块”之间插入切割线

已编辑 现在采用循环方法

\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{pifont}
\usepackage{fancyhdr}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\usepackage{lipsum}  
\usepackage[letterpaper, portrait, tmargin=8mm, bmargin=10mm]{geometry}
\usepackage{pgffor}

\begin{document}
This line its for fix width \\
% JUST REPEAT BLOCK MANY TIMES (NOT REAL BUT WORKS FOR EXAMPLE)
\foreach \n in {1,...,3}{
    % START BLOCK
    \begin{minipage}{\textwidth}
        \textbf{{\large Block Number \n}} \\
        \lipsum[2-4]
    \end{minipage}

    \vspace{\baselineskip}
    \noindent\dotfill\ding{33}\dotfill
    \vspace{\baselineskip}
    % END BLOCK
}
\end{document}

示例代码

正如您在图片中看到的,页面末尾的剪切线毫无意义,不需要绘制/插入

我认为可以使用类似方法来解决needspace,但我不知道如何开始。

答案1

阅读软件包一段时间后,needspace我尝试编写一个cutline基于的命令needspace

\documentclass[12pt]{article}
\usepackage{lipsum}
\usepackage[letterpaper, portrait]{geometry}
\usepackage{pgffor} % For cycle
\usepackage{pifont}
\usepackage{calc}

\makeatletter
    \newcommand{\cutline}[1]{\par \penalty-100\begingroup
        \setlength{\dimen@}{#1+6\baselineskip} % Sum space of block and cutline
        \dimen@ii\pagegoal \advance\dimen@ii-\pagetotal
        \ifdim \dimen@>\dimen@ii
            \ifdim \dimen@ii>\z@
                \vfil
            \fi
            \break
        \else
            \vspace{\baselineskip}
            \noindent\dotfill\ding{33}\dotfill
            \vspace{\baselineskip}
        \fi
        \endgroup}
\makeatother

\def\one{1}
\newlength{\blockheight}

\begin{document}

% JUST REPEAT BLOCK MANY TIMES (NOT REAL BUT WORKS FOR EXAMPLE)
\foreach \n in {1,...,20}{
    \def\newblock{ % SET BLOCK DATA
        \begin{minipage}{\textwidth}
            \textbf{{\large Block Number \n}} \\
            \lipsum[4-1]
        \end{minipage}      
    }
    \settoheight\blockheight{\newblock} % GET HEIGHT OF NEXT BLOCK
    \ifnum \n>1 % SKIP FIRST BLOCK
        \cutline{\blockheight} % PRINT CUTLINE OR BREAK BASED ON NEXT BLOCK HEIGHT
    \fi
    \newblock % PRINT BLOCK
}
\end{document}

结果

结果

我想澄清两件事:

  • 显然,在生成 .tex 时会检测该块是否是第一个,以免插入切线。
  • 如果有更好的建议,我会接受。

相关内容