PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : elastische Masse und vspace



badera
19-07-2006, 11:38
Ich möchte gerne vertikale elastische Abstände einfügen. Geht das überhaupt?

Ich habe es so versucht:


\vspace{24pt plus12pt minus12pt}


leider scheint das mass nicht elastisch zu sein. (Ich merke das daran, dass die unterste Zeile auf dem Blatt nicht gleich grossen Abstand hat, wie auf anderen Seiten, wo nur Text drinne steht.)

Ich habe auch nirgends die Info gefunden, dass \vspace tatsächlich elastische Masse akzeptiert; allerdings ist ja \vfill nichts anderes als \vspace{\fill}; und \fill selbst ist ein elastisches Mass, woraus ich schliesse, dass es gehen sollte...

Hat jemand eine Idee? - Ich suche einfach eine Möglichkeit, vertikalen Abstand in Form eines elastischen Masses einzufügen. Müsste ja nicht unbedingt mit vspace sein, wenn jemand ne andere Lösung hat. - Vielen Dank für die Hilfe
- Adrian

badera
20-07-2006, 19:05
Geht das nicht? / Gibts das nicht?

bischi
20-07-2006, 19:20
Ich hab die Frage nicht ganz 100% verstanden: Was möchtest du genau machen?

MfG Bischi

badera
20-07-2006, 19:50
Angenommen, ich habe eine Seite voll von Text, Zeile um Zeile. Alles ist schön eingemittet, so dass zwischen der obersten Textzeile und der Kopfzeile (oder Seitenrand) und zwischen der untersten Textzeile und der Fusszeile (oder Seitenrand) genau derselbe Abstand ist.

Nun möchte ich irgendwo mitten im Text zwischen zwei Absätzen etwas einfügen; zum Beispiel ein Gedicht, das zentriert und kursiv gesetzt wird.
Dazu möchte ich oberhalb vom Gedicht und unterhalb einen vspace von sagen wir mal 6pt haben.

Nun wird mir bestimmt das Seitenlayout etwas verschoben; das heisst: die unterste Textzeile ist nicht gleich weit unten, wie das sonst üblich ist. Sie ist etwas weiter oben, da der Abstand von 2 x 6pt nicht genau einer Zeilenhöhe (Texthöhe + Zeilenabstand) entspricht; die nächste Zeile hat nicht mehr platz, also kommt sie auf die nächste Seite...

angenommen, der vertikale Abstand wäre nun elastisch, und zwar dehnbar z.B. um nochmals 0..6pt, so würde das bewirken, dass der Abstand zwischen Gedicht und Text so gross wird, dass die unterste Zeile gerade wieder so weit unten ist, wie normal.
Und genau das möchte ich anstreben.

Würde ich z.B. im oberen Beispiel zum \vspace{6pt} noch \vfill einfügen, funktioniert es eigentlich genau so, wie ich möchte; allerdings kann halt \vfill jede Grösse annehmen, so dass wenn z.B. nach dem Gedicht nicht mehr genügend Text kommt, um die Seite ganz zu füllen, die Abstände riesen gross werden, was ich wiederum nicht möchte.


Hoffentlich ist es jetzt etwas verständlicher. Jedenfalls besten Dank für die Nachfrage; vielleicht kannst Du mir jetzt helfen! Danke!
- Adrian

edico
21-07-2006, 10:58
Versuch es mal so ...
%
\documentclass[a4paper,oneside]{book}
\usepackage[german]{babel}
\usepackage[latin1]{inputenc}

\newcommand{\Gedicht}[1]{%
\setlength{\parfillskip}{0pt plus 1fil}\par\vspace{\baselineskip}
\begin{verse}
#1
\end{verse}
\setlength{\parfillskip}{0pt plus 1fil}\par\vspace{\baselineskip}
}

\usepackage{blindtext}
\begin{document}
\chapter{}
\blindtext\par
\blindtext[3]
\chapter{}
\blindtext
\Gedicht{
Und immer wieder wie ein Duft\par
Der Mondschein auf den Giebeln liegt\par
Und durch die kühle, dunkle Luft\par
Die leichte Schar der Wolken fliegt!
}
\blindtext[3]
\chapter{}
\blindtext
\Gedicht{
Und immer wieder wie ein Duft\par
Der Mondschein auf den Giebeln liegt\par
Und durch die kühle, dunkle Luft\par
Die leichte Schar der Wolken fliegt!\\[10pt]

Das alles steht und hat Bestand,\par
Wir aber ruhen eine Nacht,\par
Und gehen weiter über Land,\par
Wir uns von niemand nachgedacht.
}

\blindtext[3]
\chapter{}
\blindtext
\Gedicht{
Und immer wieder wie ein Duft\par
Der Mondschein auf den Giebeln liegt\par
Und durch die kühle, dunkle Luft\par
Die leichte Schar der Wolken fliegt!\\[10pt]

Das alles steht und hat Bestand,\par
Wir aber ruhen eine Nacht,\par
Und gehen weiter über Land,\par
Wir uns von niemand nachgedacht.\\[10pt]

Wie fremd und wunderlich das ist,\par
Dass immerfort in jeder Nacht\par
Der leise Brunnen weiterfliesst,\par
Vom Ahornschatten kühl bewacht!
}
\blindtext[3]
\end{document}
%
... aber vielleicht versteh ich dein Problem nicht ...
edico

badera
22-07-2006, 08:24
Erstmals vielen Dank für die Antwort!

Rückfragen:
1) Was ist "1fil" ? - Ich kann nirgends diese Masseinheit erklärt finden!

2) Was ist \parfillskip - kann ich auch nicht erklärt finden.

Weshalb denn nicht


\setlength{\baselineskip}{0pt plus 1fil}\par\vspace*{\baselineskip}%

sondern parfillskip abändern wenn man doch nachher baslineskip einfügt? - Vielleicht etwas dumme Frage!

Jedenfalls läufts so, wie Du es vorgeschlagen hast, nicht optimal. Aber es bringt mich sicher auf eine gute Spur... Danke!
- Adrian

badera
22-07-2006, 10:31
Irgendwie funktioniert das Ganze einfach so nicht wirklich zuverlässig.

Ich versuche noch ein praktisches Beispiel erneut zum erklären meines Problems; eigentlich ist es soo einfach.


\newpage
erste Zeile\par
\vfill
letzte Zeile\par
\newpage

bewirkt, dass auf der aktuellen Seite in der obersten Zeile "erste Zeile" steht und zu unterst auf dem Blatt "letzte Zeile".

Nun möchte ich halt einfach an Stelle von \vfill, das mir einen unbegrenzten elastischen Space (hier über die ganze Seite) einfügt, erreichen, dass die Elastizität nicht über die ganze Seite reichen darf, sondern nur innerhalb von z.B. 24pt oder so...
Im Prinzip möchte ich \vfill haben, dem ich die maximal erlaubte Ausdehnung angeben kann.
Oder was auch ginge: könnte ich von \fill die maximal annehmbare Grösse limitieren, so könnte ich mit \vspace{\fill} auch erreichen, was ich möchte.

Kann noch jemand in die Trickkiste greifen? - Danke
- Adrian

tobber
24-07-2006, 21:43
Möchtest Du, dass Deine Drucksache Register hält? Versuche doch einfach über \vspace ganze Zeilen zu schubsen, also dergestalt:

\vspace{2\baselineskip}% f. 2 Zeilen nach unten

wenn Du die Sache recht arithmetisch anstellst, sollte es unten wieder passen.

RedCloud
24-07-2006, 22:02
Möchtest Du, dass Deine Drucksache Register hält? Versuche doch einfach über \vspace ganze Zeilen zu schubsen, also dergestalt:

\vspace{2\baselineskip}% f. 2 Zeilen nach unten

wenn Du die Sache recht arithmetisch anstellst, sollte es unten wieder passen.



\documentclass[12pt]{article}
\usepackage{blindtext}
\newskip\mySkip\mySkip=10cm plus 2cm minus 3cm

\begin{document}

\blindtext

\vspace{\mySkip}% gibt einen Abstand von 9.5cm (Seite 1)
\blindtext\blindtext\blindtext

\clearpage
\blindtext\blindtext

\vspace{\mySkip}% gibt einen Abstand von 7cm (Seite 3)
\blindtext\blindtext\blindtext

\end{document}


rc

badera
25-07-2006, 07:48
Möchtest Du, dass Deine Drucksache Register hält? Versuche doch einfach über \vspace ganze Zeilen zu schubsen, also dergestalt:

\vspace{2\baselineskip}% f. 2 Zeilen nach unten

wenn Du die Sache recht arithmetisch anstellst, sollte es unten wieder passen.

Schlussendlich kommt es schon auf das heraus! Aber das Problem ist halt, wenn man z.B. noch andere Schriftgrössen hat (z.B. für Überschriften) oder sonst Sachen, von denen man nicht genau weiss, wie hoch sie sind, könnte es schwierig werden, es rein arithmetisch so zu biegen, dass es aufgeht!

badera
25-07-2006, 07:59
\documentclass[12pt]{article}
\usepackage{blindtext}
\newskip\mySkip\mySkip=10cm plus 2cm minus 3cm

\begin{document}

\blindtext

\vspace{\mySkip}% gibt einen Abstand von 9.5cm (Seite 1)
\blindtext\blindtext\blindtext

\clearpage
\blindtext\blindtext

\vspace{\mySkip}% gibt einen Abstand von 7cm (Seite 3)
\blindtext\blindtext\blindtext

\end{document}


rc

Hmmm... Wenn das wirklich funktioniert, dann wäre es suuuppper!! Dann würde ich mich in höchsten Tönen bedanken!
Wie weisst Du denn, dass es erstens 9.5cm und zweitens 7cm Abstand gibt?

Ich werde das ganze am Abend probieren; hier kann ich gerade nicht... ich komme jedenfalls darauf zurück. Besten Dank!
- Adrian

RedCloud
25-07-2006, 08:14
Hmmm... Wenn das wirklich funktioniert, dann wäre es suuuppper!! Dann würde ich mich in höchsten Tönen bedanken!
Wie weisst Du denn, dass es erstens 9.5cm und zweitens 7cm Abstand gibt?


mit dem Lineal ausgemessen ...

rc

badera
26-07-2006, 18:29
Nach diversen Tests habe ich leider sehen müssen, dass es so nicht funktioniert! :mad: :mad:
Der Abstand ist nicht elastisch! Jedenfalls nicht so, dass die Zeilen so nach unten geschoben werden, wie das eben z.B. \vfill machen würde.
Bei Dir verhält sich das Ganze aber tatsächlich elastisch! Nun, irgendwie verhält sich diese Variante nicht so, wie eben z.B. \vfill wirklich sehr "stark" wirkt. \vfill nimmt sich in jedem Fall den Platz, den es nur irgendmöglich erhalten darf; die von Dir aufgeführte Idee funktioniert manchmal, manchmal wieder nicht... einfach nicht so, dass unten wirklich alles bündig wird.

Hat das ganze etwas mit dem Mass \fil zu tun? Denn:

Angenommen, ich ändere Deinen Code so ab:


\newskip{\elSkip}
\setlength{\elSkip}{0pt plus1fil}

\newcommand{\elspace}%
{
\vspace*{\elSkip}&
}


und füge nun an meinen gewünschten Stellen so den elastischen Abstand ein:


...
\elspace
...


Dann ist der Abstand voll elastisch, und verhält sich so, wie ich mir wünsche NUR: 1fil ist viel zu gross; der Abstand kann viel zu grosse Abstände annehmen. Leider bringt es auch nichts, wenn ich schreibe "plus0.1fil" an Stelle von "plus1fil".
Jedenfalls sind wir jetzt einen Schritt weiter. Leider aber noch nicht ganz so, wie es sein sollte. Vielleicht kann man das auch noch zurechtbiegen? - Jedenfalls schon mal vielen Dank!

Ich hoffe, ich gehe niemandem auf die Nerven mit meinem ewigen gemeker... ich bedanke mich sicher in aller Form für das bereits erhaltene; da es aber noch nicht ganz das ist, was ich wirklich brauche, muss ich halt noch etwas weiterbohren...

- Adrian

RedCloud
26-07-2006, 19:56
Nach diversen Tests habe ich leider sehen müssen, dass es so nicht funktioniert! :mad: :mad:
Der Abstand ist nicht elastisch! Jedenfalls nicht so, dass die Zeilen so nach unten geschoben werden, wie das eben z.B. \vfill machen würde.

\vfill schiebt alles nach unten, da es eine "Elastizität" von unendlich hat.



Bei Dir verhält sich das Ganze aber tatsächlich elastisch! Nun, irgendwie verhält sich diese Variante nicht so, wie eben z.B. \vfill wirklich sehr "stark" wirkt. \vfill nimmt sich in jedem Fall den Platz, den es nur irgendmöglich erhalten darf; die von Dir aufgeführte Idee funktioniert manchmal, manchmal wieder nicht... einfach nicht so, dass unten wirklich alles bündig wird.

ist doch logisch, ist schließlich auch kein \vfill. TeX nimmt meine Länge und ändert sie dynamisch, sodass nach TeX's Meinung der Seitenaufbau und -umbruch optimal ist.

rc