Vertikale Raumeinfügung in verschiedenen Kontexten

Vertikale Raumeinfügung in verschiedenen Kontexten

Dies ist mein erster Beitrag. Ich hoffe, er ist nicht zu redundant zu bereits vorhandenem Material. Ich verwende Latex schon eine Weile, aber immer mit einem sehr utilitaristischen Ansatz. Der Befehl \vspace verwirrt mich immer, da ich ihn irgendwie kontraintuitiv finde.

Im folgenden Minimalbeispiel suche ich nach Befehlen zum manuellen Hinzufügen weißer vertikaler Leerzeichen (ja, ich weiß, das ist hässlich!) an den verschiedenen Stellen, die durch die kommentierten „Skipspace“-Makros angezeigt werden.

\documentclass[a4paper,11pt]{article}
\newlength{\addspace}
\setlength{\addspace}{0mm} % play easily on the inserted length
\begin{document}

First paragraph~: starts off with some very interesting text,
until we encounter a first equation~:
%\skipspace1{\addspace}
$$
x=5,
$$
%\skipspace2{\addspace}
after what the paragraph continues, with some even more interesting
text, and finally ends with another equation~:
$$
x=5.
$$
%\skipspace3{\addspace}

Second paragraph~: we are going to encounter a line break
(don't ask why I like to have these from time to time).\\
%\skipspace4{\addspace}
This is the same paragraph continuing after the break.
%\skipspace5{\addspace}

Third paragraph~: whatever. As far as I'm concerned, the example is over,
but multiple-line paragraphs definitely look better.
\end{document}

Meiner Erfahrung nach werden die Positionen „1“ und „5“ von \vspace gut gehandhabt, während die Positionen „2“, „3“ und „4“ jedes Mal etwas Feinabstimmung erfordern (weil \vspace am Anfang einer neuen Zeile nicht intuitiv funktioniert). Im Moment verwende ich einen hässlichen Hack, der auf einer Zeile mit einem einzigen Leerzeichen basiert:

In den Fällen 2 und 4 funktioniert Folgendes:

\ \vspace{\addspace}\\[-\baselineskip]

Im Fall 3 funktioniert Folgendes:

\ \vspace{\addspace}\\[-2\baselineskip]

Meine Frage ist nun: Gibt es ein allgemeines Makro (schöner als mein Hack), das sich gemeinsam um die Fälle „2“, „3“ und „4“ kümmert? Oder noch besser (nur ein Traum): Gibt es ein allgemeines Makro, das alle 5 Fälle direkt handhaben kann?

Vielen Dank im Voraus für Ihre Zeit und Erklärungen,

Howard

EDIT: Meine eigene Antwort finden Sie weiter unten, dank der Antwort von David Carlisle

Antwort1

Wenn \vspacees im vertikalen Modus verwendet wird, wird das Leerzeichen an dieser Stelle hinzugefügt. Wenn es im horizontalen Modus hinzugefügt wird, wird es aufgeschoben, bis der Absatz in Zeilen aufgeteilt wird. Dann wird das Leerzeichen nach der Zeile hinzugefügt, die den Knoten mit dem aufgeschobenen Leerzeichen enthielt.

Das Verhalten im horizontalen Modus ist gewissermaßen gerechtfertigt, aber selten erwünscht, daher lautet die einfache Regel: Lassen Sie davor immer eine Leerzeile \vspace.

$$Die andere zu beachtende Regel besteht darin, dass Sie vor der Anzeige von Mathematik niemals eine leere Zeile lassen sollten (die in Latex nicht mit markiert werden sollte , dasselbe gilt jedoch für \[).


\ \vspace{\addspace}\\[-2\baselineskip]

ist eine sehr bizarre Konstruktion: Bei Verwendung im vertikalen Modus beginnt ein Absatz mit einem Absatzeinzug, dann einem erzwungenen Wortabstand ab und \dann einem erzwungenen Umbruch ab. \\Wenn eine Leerzeile folgt, ist die Zeile nach dem Umbruch leer und generiert eine Hbox-Warnung wegen zu geringer Fülle. Dann endet der Absatz, sodass \addspacenach der ersten weißen Zeile hinzugefügt wird. Sie generieren also zwei weiße Hboxen, die bei einem Seitenumbruch nicht verworfen werden und \addspace - 2\baselineskipzwischen denen ein Leerzeichen liegt. Dies sieht ähnlich aus wie ein Leerzeichen von, \addspaceaber die Interaktion mit dem Text darüber und darunter ist anders und das Verhalten bei einem Seitenumbruch ist völlig falsch, sodass ein Seitenumbruch zwischen den beiden weißen Linien möglich ist und am oberen Rand der nächsten Seite eine anomale weiße Linie erzeugt wird.

Antwort2

Dank David Carlisles Antwort habe ich herausgefunden, dass „Fall 3“ (Einfügen eines Leerzeichens zwischen einer Gleichung und dem folgenden Absatz) auch problemlos mit \vspace möglich ist, außer dass man es zwischen zwei Leerzeilen einfügen muss. Wenn ich also meine aktuelle Lösung zusammenfasse, sieht sie so aus~:

\documentclass[a4paper,11pt]{article}
\newlength{\addspace}
\setlength{\addspace}{0mm} % play easily on the inserted length

\newcommand{\myvspace}[1]{\ \vspace{#1}\\[-baselineskip]} % home-made ugly macro

\begin{document}

First paragraph~: starts off with some very interesting text,
until we encounter a first equation~:
\vspace{\addspace} % CASE 1
\[
x=5,
\]
\myvspace{\addspace} % CASE 2
after what the paragraph continues, with some even more interesting
text, and finally ends with another equation~:
\[
x=5.
\]

\vspace{\addspace} % CASE 3... blank lines above and below are important to enter vertical mode

Second paragraph~: we are going to encounter a line break
(don't ask why I like to have these from time to time).\\
\myvspace{\addspace} % CASE 4
This is the same paragraph continuing after the break.

\vspace{\addspace} % CASE 5

Third paragraph~: whatever.
\end{document}

Es scheint also, dass ich mit \vspace (für die Fälle 1, 3, 5) und meinem hässlichen selbstgemachten Makro \myvspace (für die Fälle 2 und 4) alles machen kann, was ich will ... und das ist mehr oder weniger in Ordnung. Vielen Dank an alle und besonders an David, der mich auf den Unterschied zwischen horizontalem und vertikalem Modus hingewiesen hat.

Howard

verwandte Informationen