我想将多个元素分布在多个页面上,这些元素之间留有间隙。间隙的高度应大致相同。
例子:
element1
\vspace*{\fill}
element2
\vspace*{\fill}
element3
\vspace*{\fill}
element 4
\vspace*{\fill}
如果第一页只适合显示前三个元素,我会得到如下结果,
+--------+ +--------+
|element1| |element4|
| | | |
|element2| | |
| | | |
|element3| | |
| | | |
+--------+ +--------+
但我想要像这样的分布
+--------+ +--------+
|element1| |element3|
| | | |
| | | |
|element2| |element4|
| | | |
| | | |
+--------+ +--------+
此外,我希望元素始终分布在偶数页上。
这个问题的背景如下:我想以典型的 filofax 格式打印出我的数字日历 (*.ics),每周两页。每一天都应该有一些空间用于手写笔记,以便添加约会、待办事项等。我有时在一周的开始有更多约会,有时在周末有更多约会,因此在周三和周四之间设置固定的分页符并不是一个好的解决方案。在极少数情况下,一周甚至无法容纳两页,因此最好自动将日期分配到偶数页上。
是否有可能实现类似的东西\multipagevfill
,或者 TeX 一次只能关注一页?也许可以像 supertabular 一样进行额外的运行?
答案1
您可以定义tcolorboxes
特定的text height
(或height fill
完全填充可用空间)。text height
将独立于框内容固定框高度,因此您可以使用手写文本完成框内容。
\documentclass{article}
\usepackage[most]{tcolorbox}
\tcbset{colback=red!5!white, colframe=red!75!black}
\begin{document}
\begin{tcolorbox}[title=Monday, text height=5cm]
\begin{itemize}
\item Task
\item Task
\end{itemize}
\end{tcolorbox}
\begin{tcolorbox}[title=Tuesday, text height=5cm]
\end{tcolorbox}
\begin{tcolorbox}[title=Wednesday, height fill]
\end{tcolorbox}
\end{document}
答案2
不确定这是否足够,因为我无法在您的实际条件下尝试。但我创建了一个宏
\PageElements[<min element vertical size>]{<no pages>}{<no elements>}
通过它设置希望分发的页面和元素的期望数量。该宏仅定义一个,\mingap
稍后将(与一个一起\vfil
)应用于每个元素之后。
在某些情况下可能需要可选参数,但默认为 0pt。
在下面的 MWE 中,我将 4 个元素分布在 2 页上,然后将 6 个元素分布在 2 页上,最后将 6 个元素分布在 3 页上。
\documentclass{article}
\newcommand\element[1]{\leavevmode\framebox(100,100){element#1}\vgap}
\def\mingap{0pt}
\newcommand\vgap{\leavevmode\vspace{\mingap}\vfil\par}
\newcommand\PagesElements[3][0pt]{\def\mingap{%
\the\dimexpr\textheight/\numexpr#3/#2+1\relax-\dimexpr#1\relax}}
\begin{document}
\PagesElements{2}{4}
\element1
\element2
\element3
\element4
\clearpage
\PagesElements[40pt]{2}{6}
\element1
\element2
\element3
\element4
\element5
\element6
\clearpage
\PagesElements{3}{6}
\element1
\element2
\element3
\element4
\element5
\element6
\clearpage
\end{document}
第 1 页
全部 7 页