2010-06-22 10 views
5

Hi entuzjastów LaTeX i programistów TeX!LaTeX: Pokaż blok tylko jeśli jest wystarczająco dużo miejsca

Obecnie rozwijam jednostronicową klasę dokumentów dla niektórych rodzajów ulotek, które powinny być generowane automatycznie. Niestety ograniczona ilość miejsca nie pozwala wyświetlić wszystkiego na stronie, więc muszę całkowicie pominąć niektóre artykuły (nie chcę, aby tylko połowa artykułu została wydrukowana na ulotce).

W pseudo kod, to jest to polecenie szukam:

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

A przypadki użycia są:

  • Jeśli nie ma wystarczająco pionowa przestrzeń dla poniższym artykule pozostawione na stronie wydrukuj artykuł całkowicie. W przeciwnym razie dodaj tylko nagłówek do listy "Inne artykuły".
  • Jeśli pozostało wystarczająco dużo miejsca w pionie, dodaj dużą reklamę, w przeciwnym razie dodaj mniejszą lub nic nie rób.

Jestem pewien, że będzie sposób na uzyskanie tego. Na przykład polecenie TeX \leaders, które działa w trybie pionowym i poziomym, wstawia tylko lider, jeśli jest wystarczająco dużo miejsca. Niestety nie chcę niczego powtarzać, a akcja "else" również może być świetna.

Wszelkie słowa kluczowe i wskazówki dotyczące przydatnych poleceń zostaną docenione. Nie musisz publikować kompletnych rozwiązań (ale możesz oczywiście).

Dziękujemy,
Christoph

Odpowiedz

1

Pakiet 'needspace' może dać to, czego szukasz, choć jeśli nie ma wystarczająco dużo miejsca, to wstawia pagebreak:

http://ctan.org/pkg/needspace

Można go użyć w następujący sposób:

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

Jeśli nie chcesz zamiast przerwa ta strona, gdy nie ma wystarczająco dużo miejsca, ale chcą więcej treści z minipage zapisanych do następnej strony, a następnie trzeba będzie zbadać, jak uchwyty LaTeX „pływa”:

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

+0

nie sądzę że pakiet 'needspace' będzie dla mnie przydatny, ponieważ nie chcę generować drugiej strony w każdych okolicznościach. W każdym razie dwa makra "\ pagetotal' i' \ pagegoal ", które są używane przez pakiet' needspace', wyglądają obiecująco. Myślę, że najpierw na nich spojrzę. Dzięki za wskazówkę. – tux21b

+0

@ tux21b: Przepraszam, nie przeczytałem twojego pytania wystarczająco dokładnie. Prawdopodobnie robisz to już teraz, ale użycie warunkowości Tex lub pakietu if if w LaTeX (który również robi///else) może pomóc w podstawowej strukturze implementacji tego, co chcesz. OH, TAKŻE, najlepsze miejsce, aby poprosić o pomoc, jest prawdopodobnie na forum na http://www.latex-community.org. –

+0

Hehe, masz rację. Rozwiązałem teraz problem z pakietem ifthen i dwoma makrami: \ "' Dziękuję za pomoc i link. – tux21b

Powiązane problemy