我正在编写一个 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 时会检测该块是否是第一个,以免插入切线。
- 如果有更好的建议,我会接受。