Wie kann ich ein Zeile, die auf der vorherigen Seite ist, aber zu einem Absatzblock gehört mit auf die nächste Seite bringen. Das soll so funktionieren wie mit /paragraph, nur das dieser Befehl mir zusätzlich Abstand oberhalb des Absatzes macht und das möchte ich nicht, ich möchte den globalen Absatz zwischen zwei Absätzen nutzen.
ich habe ein Befehl definiert änlich \paragraph :
\newcommand{\paragraphcode}[1]{\texttt{#1}}
es soll etwa so ausehen:
Text Text Text Text Text Text Text Text ^ | Absatz wie im ganzan Dokument | \paragraphcode{Text} - Text Text Text Text <--- siehe [BESCHREIBUNG] Text Text Text Text Text Text Text Text <\code> [BESCHREIBUNG] Die Zeile soll nicht am Ende der Seite alleine stehen, sondern auf die nächste seite verfrachtet werden. Hat einer für mich einen Tipp, wie ich das bewerkstelligen kann
Kurze Frage zu parskip
Ich verwende in meinen Dokument den folgenden Kopf:
\documentclass[12pt,a4paper,cleardoubleempty,pointlessnumbers,parskip]{scrbook}und verwende für das ganze Dokument den Zeilenabstand:
So mache ich den Absatzabstand einfach mit der Returntaste, also nicht mit \\. Wenn ich jetzt für das ganze Dokument das folgende verwende:
Dann dehnt er mir die Abstände zwischen den Absätzen so, dass der Text unten und oben bündig ist. Das liegt ja an
parskipin der Dokumentclasse. Ich will aber, dass der Text nur oben bündig mit der Seite ist und die Abstände gleich sind, etwas Spielraum sollten die dennoch haben. Wenn ich also\parskip=WERTverwende sind die Abstände zwischen den Absätzen nicht mehr elastisch. Sie sollen elastisch sein, aber nicht bis ins Unendliche, sonder mit ganz kleiner Elastizität.Übrigens wenn ich nur
\clubpenalty=10000benutze, sieht es so aus wie ich mir das vorstelle, nur dass die einzelne letzte Zeilen oben nicht verhindert wird.Satzspiegel neu berechnen
Du veränderst den Durchschuss, ohne den Satzspiegel anzupassen. In der Voreinstellung doppelseitiger Dokumente (Voreinstellung von scrbook) wird mit vertikalem Ausgleich gearbeitet, damit die letzte Zeile immer an derselben Stelle steht. Damit das bei normalem Text ohne Dehnung funktioniert, wird der Satzspiegel von typearea so berechnet, dass der Satzspiegel eine ganze Anzahl von Zeilen zuzüglich
\topskiphoch ist. Wenn man nun aber den Durchschuss ändert, dann stimmt diese Berechnung nicht mehr. Deshalb steht in der KOMA-Script-Anleitung auch, dass man bei Änderung des Durchschusses anschließend mit\typeareaden Satzspiegel neu berechnen soll. Das war das eine.Außerdem handhabt TeX es so, dass bei Problemen mit der Füllung (egal ob vertikal aufgrund des vertikalen Ausgleichs oder horizontal beispielsweise im Blocksatz) alle dehnbaren Abstände entsprechend ihrer Dehnbarkeit überdehnt werden. Bei Überdehnung wird dann aber eine Meldung »
underfull \vbox« (bzw. dasselbe mit »\hbox« bei horizontalen Problemen) von TeX erzeugt. Darauf solltest du einmal achten, denn der Absatzabstand ist nicht mit unendlicher Dehnbarkeit definiert, sondern es darf je nach parskip-Option maximal eine halbe Zeile zusätzlicher Abstand eingefügt werden (bevor eben überdehnt und damit das Problem auch gemeldet wird).Desweiteren ist existiert ein grundsätzliches Satzproblem, wenn gleichzeitig Schusterjungen und Hurenkinder verboten und mit vertikalem Ausgleich gearbeitet wird. Eigentlich bedeutet das, dass der Seitenumbruch über mehrere Seiten hinweg (bei Büchern bis hin zu einem ganzen Kapitel) optimiert werden müsste. TeX bietet dafür aber praktisch keine Möglichkeit. Es bleibt nur, entweder auf den vertikalen Ausgleich zu verzichten (Stichwort:
\raggedbottom) oder aber den Seitenumbruch an besonders problematischen Stellen von Hand zu optimieren, etwa mit gezielt eingestreuten\tolerance=-1oder\tolerace=1bei einzelnen Absätzen zu versuchen eine Zeile weniger oder mehr herauszuholen, oder vor einzelnen Überschriften gezielt mit\clearpageeinen Seitenumbruch ohne vertikalen Ausgleich zu erzeugen.Es würde zu weit führen, hier all diese Möglichkeiten im Detail auszuführen. Ich hoffe aber, die diversen möglichen Probleme und Lösungsansätze wurden etwas klarer.
Vielen Dank!
Vielen Dank!
\raggedbottonist genau das was ich gesucht habe.\tolerance=3500habe ich vorher auch schon verwendet, nur nicht in bezug auf Absätze, sondern im Dokumentenkopf um größere Wortzwischenräume zu zulassen, da bei dem Schriftart (put), die ich benutze, sonst der Blocksatz nicht richtig gesetzt wird.Siehe Hurenkinder und Schusterjungen
Siehe dazu die De-TeX-FAQ (Link gibt es massenhaft im Forum). Dort die Frage: »Wie kann ich `Hurenkinder' (engl. widows), also einzelne Zeilen eines Absatzes am Kopf von Buchseiten, bzw. `Schusterjungen/Waisenkinder' (engl. clubs), einzelne Absatzzeilen auf der Seite unten, verhindern?«
Eine etwas eigenartige
Eine etwas eigenartige Beschreibung :D Aber sie funktioniert ! THX
Die Lösung !
Der gelungsbereich ist mir noch unklar, hoffe der beschränkt sich auf \paragraphcode
Wieso sollte sie?
Penalties gelten immer bis zum Ende der aktuellen Gruppe. da du keine Gruppe verwendest also forever.
Wobei ich ja ehrlicherweise zugeben muss, dass mir absolut nicht klar ist, was der Sinn des Ganzen ist. Wenn das wirklich eine Überschrift werden soll, dann solltest du auch eine Überschrift definieren (siehe Definition von
\paragraphin classes.dtx oder\minisecin scrclass.dtx). Ich vermute aber (schon wegen\texttt), dass das eigentlich etwas ganz anderes werden soll.Nein lasse dich nicht von
Nein lasse dich nicht von
\textttbeirren. Es ist gnau wie\paragraph, nur mich stört der Absatz dem dieser oberhalb macht. Da hast du recht, dass ich\paragraphredefineren könnte, nur verstehe ich davon nicht so viel.Der
\paragraphsoll eigentlich so aussehen:\paragraph{\texttt{ÜBERSCHRIFT}}Dannach soll der dazugehörige Absatztext folgen. Nur oberhalb
\paragraphsoll der Abstand\baseskiphöchstens die Absätze in der Länge trennen.\paragraphhat ja eine elastische Größe und macht mehr als nur eine Zeile Abstand oberhalb und das soll ja eben nicht so sein.Wo ist das Problem?
AFAIK ist in der De-TeX-FAQ erklärt, wie die Definition eines Gliederungsbefehls mit
\@startsectionfunktioniert. In jedem Fall ist das in classes.dtx und source2e erklärt. Du hast ja auch schon erkannt, dass der Abstand über\paragraphelastisch ist. Jetzt rate mal, wo in% Definition aus scrartcl.cls \newcommand\paragraph{\@startsection{paragraph}{4}{\z@}% {3.25ex \@plus1ex \@minus.2ex}% {-1em}% {\setlength{\parfillskip}{\z@ \@plus 1fil}% \raggedsection\normalfont\sectfont\nobreak \size@paragraph\nobreak}}die elastische Größe des Abstandes vor der Überschrift steckt, wie man die Dehnbarkeit und Schrumpfbarkeit raus bekommt und den Wert des Abstandes ändert (nicht vergessen,
\newcommanddurch\renewcommandzu ersetzen). Wenn du KOMA-Script verwendest, kannst duttdann per\addtokomafont{paragraph}{\ttfamily}erreichen. Wenn du nicht KOMA-Script verwendest, solltest du statt obiger Definition die aus deiner Klasse verwenden und am Ende des letzten (also des sechsten) Arguments von\@startsectionein\ttfamilyeinfügen.Iregendwie bekomme ich
Iregendwie bekomme ich Fehler, wenn ich das so am Anfang des Dokumentes setze, habe aber mal gegooglet und fand heraus das ich das zwischen
\makeatletterund\makeatothersetzen muss und da ich ja Koma-Skript benutze, habe ich auch\addtokomafont{paragraph}{\ttfamily}verwendet und das klappt jetzt mit den Absätzen und der letzten Zeile.Irgendwie nimmt er den
\bigskipabstand nicht so richtig an und der Leerraum zwischen Überschrift des Paragraphen und Text ist etwas zu groß, aber vielleicht bekomme ich das auch noch hin. Ach ja und die Pragraphüberschrift ist noch Fett. Aber vielleicht bekomme ich das noch irgendwie hin.THX für die prompte Hilfe
\bigskip ist mehr als ein Wert
Ich weiß nicht, wo du
\bigskipverwendet hast. In dem von dir geposteten Code ist es nicht zu finden. Es sei aber angemerkt, dass\bigskipnicht einfach ein Wert wie3.25ex \@plus1ex \@minus.2exist, sondern:\def\bigbreak{\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi}Es ist also anzunehmen, dass du eher etwas wie
\bigskipamountverwenden willst, wobei\bigskipamountwiederum ein skip und keine dimension, also dehnbar und schrumpfbar ist. Du solltest also wirklich eher etwas wie 2ex verwenden, wenn das weder gedehnt noch geschrumpft werden soll.Der Abstand hinter der Überschrift ist durch
-1emvorgegeben, wobei das Vorzeichen nicht für einen negativen Abstand steht, wie man meinen sollte, sondern dafür, dass ein horizontaler statt einem vertikalen Abstand verwendet werden soll. Der kleinste mögliche horizontale Abstand ist 1 sp durch Verwendung von-1sp.