goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Direktlinks:
Zuletzt aktive Beiträge
Unbeantwortete Beiträge
[Erweitert]

Forenstatistik:
Beiträge: 99320
Top-Poster: Johannes_B (5059)

Wir begrüßen unseren neuesten Benutzer Ludio.

Links:


Mit Unterstützung von DANTE e.V.: Deutschsprachige Anwendervereinigung TeX. Danke den Mitgliedern!





Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

vor \begin{addmargin} gesetztes \clubpenalty wird ignoriert

 

khzimmer
Forum-Newbie
Forum-Newbie

Beiträge: 6
Anmeldedatum: 03.03.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.09.2019, 17:37     Titel: vor \begin{addmargin} gesetztes \clubpenalty wird ignoriert
  Antworten mit Zitat      
Hallo Wissende,

aus geheimem Smile Grund möchte ich nach begin{document} die \clubpenalty mehrmals zwischen 0 und 10000 hin und umschalten.

Es funktioniert für normale Absätze gut, die 10000 wird aber leider in Absätzen ignoriert, die innerhalb einer addmargin-Umgebung sind.

mein Minimalbeispiel, bitte testweise \begin und \end der addmargin-Umgebung ein- und auskommentieren:

Code • Öffne in Overleaf
\documentclass{scrbook}

\clubpenalty=0


\begin{document}

Test des dynamischen ein/aus Schaltens der \textbackslash clubpenalty:

\vspace{41\baselineskip}


Hier sollte der letzter Absatz der Seite sein: Danach werden Schusterjungen verboten.


\clubpenalty=10000

\begin{addmargin}{1.5em}
Dieser Absatz nun SOLLTE komplett auf Seite 2 gesetzt werden, weil Schusterjungen ja per Strafwert 10000 verboten sind. Diese weitere Worte des Absatzes dienen nur dazu, ihn noch ein wenig mehr aufzufüllen.
\end{addmargin}


\end{document}
 


Ist das ein allgemeineres Problem? Wüsste jemand eine Lösung, ohne mir dabei addmargin ausreden zu wollen? Wink

Vielen Dank
Karl-Heinz
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.09.2019, 18:12     Titel:
  Antworten mit Zitat      
LaTeX setzt per \everypar oder durch Umdefinierung von \par \clubpenalty immer wieder neu selbst entweder auf den Wert von \@clubpenalty oder \@M (das ist übrigens ebenfalls 10000). Eine dieser Gelegenheiten ist das Ende einer trivlist und damit auch das Ende jeder Listenumgebung. Wie in der KOMA-Script-Anleitung zu lesen ist, ist addmargin eine Listenumgebung. Eine andere Gelegenheit ist \item. Was nicht in der KOMA-Script-Anleitung zu lesen ist, was aber eigentlich logisch ist, wenn addmargin eine Listenumgebung ist, dass am Anfang der addmargin-Umgebung ein implizites \item ausgeführt wird.

Es gibt auch noch weitere Gelegenheiten wie die \@xsect oder \@afterheading. Deshalb kann man sich nicht darauf verlassen, dass eine Änderung von \clubpenalty auch nur das Ende des aktuellen Absatzes geschweige denn den Anfang einer neuen Umgebung oder eines Gliederungsbefehls o. ä. übersteht. Das Minimum wäre, lokal nicht nur \clubpenalty sondern auch \@clubpenalty zu ändern. Am besten definiert man sich dafür einen Befehl, der beide Werte ändert. \@clubpenalty ist übrigens ein TeX-Zähler, also bitte nicht mit [r]\renewcommand][/t] sondern einfach per Wertzuweisung ändern. Je nachdem, was du tatsächlich vor hast, genügt eventuell auch \@nobreaktrue. Oder du willst eventuell eine minipage innerhalb der addmargin-Umgebung. Das kann ich nicht beurteilen, weil du nicht dein eigentliches Problem angegeben hast, sondern nur welches Problem du mit deinem eigenen Lösungsversuch hattest.

khzimmer
Forum-Newbie
Forum-Newbie

Beiträge: 6
Anmeldedatum: 03.03.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.09.2019, 18:34     Titel:
  Antworten mit Zitat      
Vielen Dank für die freundliche Erklärung.

Mein Ziel ist tatsächlich nur die Vermeidung von Schusterjungen in einigen, besonderen Fällen, daher passt Dein erster Tipp am besten.

Mit diesen Anweisungen klappt's:

Code • Öffne in Overleaf
\makeatletter\clubpenalty=\@M\@clubpenalty=\@M\makeatother


Fröhliche Wochenendgrüße Smile
Private Nachricht senden Benutzer-Profile anzeigen

khzimmer
Forum-Newbie
Forum-Newbie

Beiträge: 6
Anmeldedatum: 03.03.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2019, 16:46     Titel:
  Antworten mit Zitat      
PS: Ergänzender Hinweis für evtl. später dies Lesende:

Setzen von \clubpenalties anstelle der alten Befehle erspart das doppelte Setzen und kommt ohne ein @ aus.

Dies klappt gut für mich:

Code • Öffne in Overleaf
% verbieten der Schusterjungen:
\clubpenalties 2 10000 0

% einer oder mehrere Absätze …

% erlauben der Schusterjungen:
\clubpenalties 1 0
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2019 goLaTeX.de