2 Stimmen

Wie kann man eine mehrseitige Umgebung definieren, die nicht durch Tabellen und Abbildungen unterbrochen wird?

Ich habe eine neue LaTeX-Umgebung für Exkursionen in einem Buchkapitel definiert, das ich gerade schreibe. Die Umgebung ist mehrseitig und enthält oft Inline-Bilder. Außerdem verwende ich die schattierte Umgebung, um der Umgebung eine Hintergrundfarbe zu geben, damit sie sich ein wenig abhebt.

Allerdings ist die Umgebung, wie unten gezeigt, durch schwebende Tabellen und Bilder aufgeteilt, was den Fluss der Umgebung visuell schwieriger zu verfolgen macht. Zum Beispiel ist es jetzt schwierig zu erkennen, ob das schwebende Bild oder die Tabelle ein Teil ist (die fehlende Hintergrundfarbe hilft nicht). Ich würde also gerne meine Umgebung so erweitern, dass sie nicht durch schwebende Elemente unterbrochen wird, weiß aber nicht, wie ich das anstellen soll.

\newcounter{bioclipse}
\def\thebioclipse{\thechapter-\arabic{bioclipse}}
\newenvironment{bioclipse}[2][]{\begin{small}\begin{shaded}\refstepcounter{bioclipse} \par\medskip\noindent%
   \textbf{Bioclipse Excursion~\thebioclipse #1: #2
   \vspace{0.1cm} \hrule \vspace{0.1cm}}
   \rmfamily}{\medskip \end{shaded}\end{small}}

Jede Lösung, die eine Unterbrechung verhindert, ist in Ordnung, auch wenn die Hintergrundfarbe anders gestaltet ist.

1voto

ShinTakezou Punkte 9154

Der Algorithmus für das Einfügen ist ziemlich komplex. Grundsätzlich wollen Sie, dass jede anstehende Einfügung nicht in die Seite eingefügt werden darf, in der die env bioclipse anwenden. Als erste schnelle Lösung könnten Sie zunächst alle Einfügungen löschen und dann das neue Kapitel beginnen. Wenn Sie Zahlen oder was auch immer in die Umgebung einfügen wollen, und Sie wollen, dass sie erst nach der letzten Seite, auf der die Umgebung arbeitet, "gespült" werden... die zweite schnelle Lösung ist: fügen Sie sie direkt nach der Umgebung ein!!! So "stören" sie die Seite(n) nicht (natürlich sollte man die Verwendung von Fußnoten vermeiden).

Die andere Lösung (eine Art Automatismus) ist etwas komplizierter. Die Einfügeplätze für "ausstehende" Materialien werden beim Aufbau der vertikalen Liste, die die Seite darstellt ("Kandidaten"), in der Ausgaberoutine ausgewählt. Das bedeutet, dass man schlimmstenfalls mit der Ausgaberoutine spielen muss; aber vielleicht ist das zu viel, es sei denn, man plant sein eigenes TeX-Format, und vielleicht bietet LaTeX einfachere Möglichkeiten...

Wenn ich ein wenig in den LaTeX-Codes stöbere, sehe ich, dass es eine Bedingung gibt, die man Versuchen Sie zu verwenden, ist es \@insert* d.h. \@insertfalse y \@inserttrue . Wenn Sie Glück haben, "fahren" sie die Möglichkeit, Einschübe zu setzen, so dass Sie am Anfang Ihrer env sagen können \@insertfalse und am Ende \@inserttrue . Versuchen Sie Ich sage nicht, dass es funktioniert.

Wie Sie vielleicht wissen, müssen Sie, um @ als Buchstaben-Katcode zu verwenden, damit es Teil eines "Befehls"-Namens sein kann, folgendes verwenden \makeatletter y \makeatother wenn Sie fertig sind (wahrscheinlich wird die Präambel von der Standardklasse/dem Standardstil für Sie übernommen).

Sie könnten auch an folgenden Informationen interessiert sein placeins Stil (ansonsten könnte er bereits in Ihrer Installation vorhanden sein, siehe hier ), die offenbar Ihr Problem (teilweise) lösen könnte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X