跨页迷你页面

跨页迷你页面

我正在寻找一种minipages在 LaTeX 中跨越页面的方法。

我有一系列食谱(通过 cuisine 包提供的 recipe 环境呈现),长度各不相同,从 10 行到超过一页。我希望在一页上放尽可能多的食谱,并且仅在必要时将文本扩展到多页。到目前为止,minipage如果内容不超过一页,我使用的环境就足够了。

有没有办法获得“2 页”minipage或类似的东西?

编辑:

我有类似的内容:文本 A、B、C 和 D。如果没有必要,我不希望它们跨越页面。

  • AAAABB (新页面) BBCCDD 不可接受
  • AAAA(新页)BBBB(新页)CCDD 是理想输出

编辑:

我的内容是来自美食包的食谱集合。

答案1

您的规范太模糊了。您希望将尽可能多的内容放在一页上,但有些内容大于一页,因此应该拆分。允许拆分的标准是什么?我会这样做:

  1. 将菜谱排版在一个盒子里并进行测量。

  2. 如果它短于某个恒定长度(比如说页面高度的 40%),那么就把它放在页面上的小页面中。

  3. 如果较长,则将其插入到页面上而不使用 minipage(因此允许它拆分)

下面是执行此类操作的代码:

\documentclass{article}
\usepackage{lipsum,environ}
\newsavebox\recipebox
\newlength\recipebreaklength
\setlength\recipebreaklength{0.4\textheight}
\newcommand\typesetrecipe[1]{%
  \par\noindent\rule{\linewidth}{1ex}\par
  \BODY
  \par\noindent\rule{\linewidth}{1ex}\par
}
\NewEnviron{recipe}{%
  \savebox{\recipebox}{\parbox{\linewidth}{%
    \typesetrecipe{\BODY}%
  }}%
  \ifdim
      \dimexpr\ht\recipebox+\dp\recipebox\relax 
      > \recipebreaklength
    \typesetrecipe{\BODY}%
  \else
    \par\noindent\usebox\recipebox
  \fi
  \bigskip
}
\begin{document}
\raggedbottom
\begin{recipe}\lipsum[2]\end{recipe}
\begin{recipe}\lipsum[3]\end{recipe}
\begin{recipe}\lipsum[4]\end{recipe}
\begin{recipe}\lipsum[5]\end{recipe}
\begin{recipe}\lipsum[6]\end{recipe}
\begin{recipe}\lipsum[7-10]\end{recipe}
\end{document}

答案2

你可以把文本放入一个页面\vbox,然后测试它是否太长,不适合这个页面。如果不长,你可以设置它,否则你可以\vsplit让它跨两个页面。

我问了一个类似的问题,使用 Latex 在两页相对的页面上排版给定的文本;史蒂夫的回答可以根据您的要求进行定制。

答案3

使用samepage环境来保存您想要保持在同一页面上的内容。您可能\raggedbottom也需要它。

相关内容