【问题标题】:LaTeX: Show block only if there is enough space leftLaTeX:仅当剩余空间足够时才显示块
【发布时间】:2010-06-22 16:30:18
【问题描述】:

嗨,LaTeX 爱好者和 TeX 程序员!

我目前正在为某种应该自动生成的传单开发一个单页文档类。不幸的是,有限的空间无法显示页面上的所有内容,所以我需要完全跳过一些文章(我不想只在传单上打印一篇文章的一半)。

在伪代码中,这就是我要查找的命令:

\if_sufficient_vspace_left
    {<big block/minipage with an article>}
    {<otherwise do nothing or something else>}

用例是:

  • 如果页面上有足够的垂直空间放置以下文章,请完整打印该文章。否则,仅将标题添加到 »Other Articles« 列表中。
  • 如果有足够的垂直空间,则添加一个大广告,否则添加一个较小的广告或什么都不做。

我很确定会有办法获得这个。例如,TeX 命令\leaders,它在垂直和水平模式下工作,只有在剩余空间足够的情况下才插入引线。不幸的是,我不想重复任何事情,else 操作也可能很棒。

任何有用命令的关键字和提示将不胜感激。您不必发布完整的解决方案(但您当然可以)。

非常感谢,
克里斯托夫

【问题讨论】:

    标签: latex tex pdflatex


    【解决方案1】:

    “needspace”包可能会为您提供所需的内容,但如果空间不足,它会插入分页符:

    http://ctan.org/pkg/needspace

    你会像这样使用它:

    \needspace{5\BaseLineSkip}    %  assume you need 5 lines for minipage
        {<big block/minipage with an article>}
    

    如果您不想在空间不足时分页,而是想要更多内容但将小页面保存到下一页,那么您将需要研究 LaTeX 如何处理“浮动”:

    http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions

    【讨论】:

    • 我认为needspace 包对我没有任何用处,因为我不想在任何情况下都生成第二页。无论如何,needspace 包使用的两个宏 \pagetotal\pagegoal 看起来很有希望。我想我会先看看他们。感谢您的提示。
    • @tux21b:抱歉,我没有仔细阅读您的问题。您可能已经这样做了,但是使用 Tex 的条件句或 LaTeX 中的“ifthen”包(也可以使用 if/then/else)可能有助于实现您想要的基本结构。哦,另外,寻求帮助的最佳地点可能是latex-community.org 的论坛。
    • 呵呵,你说得对。我现在已经解决了 ifthen 包和两个宏 '\pagetotal` 和 \pagegoal 的问题。所以,感谢您的帮助和链接。
    • @tux21b:如果您愿意将其发布为您自己问题的答案,我很想看看您的代码。
    • 我现在已经放弃了\pagegoal - \pagetotal 方法,因为\pagetotal 仅在调用页面构建器时递增(例如,在段落中,但不在其他 vbox 中)。现在我只是创建一个 vbox 并用\vsplit 将它拆分到所需的高度。外部 vbox 中的每篇文章也在 vbox 中,因此牢不可破。无论如何,我没有找到一种方法来修改剩余的 vbox,只显示部分标题。
    猜你喜欢
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2020-06-27
    • 1970-01-01
    • 2014-08-14
    相关资源
    最近更新 更多