Seite 1 von 2

Abfrage ob vor Text Gleitobjekte sind etc.

Verfasst: Mi 6. Jan 2016, 14:08
von Max H
Hey Leute,

habe schon ne Weile gegoogelt und leider nichts passendes gefunden, vielleicht formuliere ich mein Problem auch nicht richtig..

Ich möchte mir gern einen eigenen Befehl schreiben, der mir einen Absatz im Text erzeugt. Dieser soll mir einen \vspace{12pt} einfügen. Unter folgenden Bedingungen soll er das aber nicht tun:

-wenn er auf am Seitenbeginn steht (da der Text oben Beginnen soll)
-wenn davor ein Gleitobjekt ist (da nach diesen sowieso schon ein Abstand ist)
-wenn davor eine Überschrift ist (danach ist ebenfalls ein Abstand)

Ohne diese Bedingung würde sich der Abstand addieren und man hätte größere Lücken drin

Gibt es eine Möglichkeit mit der ich überprüfen kann ob vorher ein Gleitobjekt steht bzw. ob eine neue Seite begonnen wurde?

Vielen Dank für eure Hilfe!
Max

Verfasst: Mi 6. Jan 2016, 14:18
von Johannes_B

Verfasst: Mi 6. Jan 2016, 18:47
von Max H
Danke für die schnelle Antwort, Johannes!

Sowas habe ich auch schon versucht. Das Problem ist nur, dass sich dann der Abstand vor und nach meinen Überschriften vergrößert.

Hier mal das Minimalbeispiel:
\documentclass[%
	%parskip=full
	]{scrbook}
	
	%Schriftgröße und Absatz der Überschriften formatieren
	
	\RedeclareSectionCommand[%
		beforeskip=0pt,%
		afterskip=12pt,%
		font=\fontsize{11pt}{14pt}\selectfont\bfseries%			
		]{chapter}	
		
\begin{document}
\chapter{Test}
Hallo Hallo Hallo
\end{document}
Wenn du jetzt die Option "parskip=full" ein- und auskommentierst siehst du, dass sich der Text vertikal verschiebt.

Kann man das irgendwie umgehen?

Vielen Dank für eure Hilfe!

Verfasst: Mi 6. Jan 2016, 18:54
von Noch so einer
Man kann afterskip entsprechend verkleinern:
\documentclass[%
   parskip=full
   ]{scrbook}
   
   %Schriftgröße und Absatz der Überschriften formatieren
   
   \RedeclareSectionCommand[%
      beforeskip=0pt,%
      afterskip=0pt,%
      font=\normalsize% \bfseries kommt schon von Element disposition
      ]{chapter}  
     
\usepackage{mwe}

\begin{document}
\chapter{Test}
\lipsum
\end{document}
Allerdings sollte man bedenken, dass durch den Absatzabstand natürlich auch die optische Wirkung verändert wird und genau dem eben automatisch Rechnung getragen wird. Wenn die Überschrift im Vergleich zum Abstand zwischen Absätzen zu dicht an den ersten Absatz heranrückt, wirkt das schnell – wie drücke ich das möglichst wenig negativ aus? – merkwürdig.

Verfasst: Do 7. Jan 2016, 12:20
von Max H
Wenn ich aber
afterskip=0
setze hat das wieder Auswirkungen auf andere Fälle (z.B. der Abstand zwischen Überschrift und Unterüberschrift wird dann zu klein, dann müsste ich vor alle Unterüberschriften ein
beforeskip=12pt
setzen)
Aber dann gibt es Probleme zwischen Textabsatz und Unterüberschrift.

Hier mal das Minimalbeispiel
\documentclass[%
   parskip=full
   ]{scrbook}
   
   %Schriftgröße und Absatz der Überschriften formatieren
   
   \RedeclareSectionCommand[%
      beforeskip=0pt,%
      afterskip=0pt,%
      font=\normalsize% \bfseries kommt schon von Element disposition
      ]{chapter}  
   
    \RedeclareSectionCommand[%
      beforeskip=12 pt,%muss gewählt werden, damit Abstand zwischen Überschriften
      %afterskip=0pt,% hier würde kein Zeilenumbruch stattfinden
      afterskip=0.01ex,% etwas unsauber, aber erzeugt Zeilenumbruch (\newline funktioniert nicht)
      font=\normalsize% \bfseries kommt schon von Element disposition
      ]{section}  

\begin{document}
\chapter{Test}
\section{Test}
Erster Absatz nach Unterüberschrift
\par Der nachfolgende Abstand ist jetzt zu gross
\section{Test}
\section{Test}
\end{document}

Laut der Word-Vorlage, die ich für eine Studienarbeit umsetzen will, haben alle Objekte einen Abstand von 12 pt, also Überschrift-Unterüberschrift, Überschrift-Text, Text-Text..
Ob das typografisch sinnvoll ist oder nicht sei dahingestellt..

Jedenfalls funktioniert es so leider auch nicht :-(
Danke trotzdem.

Hat noch jemand Vorschläge?
Vielen Dank![/code]

Verfasst: Do 7. Jan 2016, 12:39
von u_fischer
\documentclass{article}
\makeatletter
\newcommand\test{\par\if@nobreak\else \addvspace{3cm}\fi abc}
\makeatother
\begin{document}
\test

blub \test

\section{abc}
\test

\begin{figure}[t]
ein bild
\end{figure}
\newpage
\test
\end{document}

Verfasst: Do 7. Jan 2016, 13:30
von Noch so einer
Ich sehe das Problem nicht so recht:
\documentclass[%
   parskip=full
   ]{scrbook}
   
   %Schriftgröße und Absatz der Überschriften formatieren
   
   \RedeclareSectionCommand[%
      beforeskip=0pt,%
      afterskip=0pt,%
      font=\normalsize% \bfseries kommt schon von Element disposition
      ]{chapter}  
   
    \RedeclareSectionCommand[%
      beforeskip=0pt,%muss gewählt werden, damit Abstand zwischen Überschriften
      %afterskip=0pt,% hier würde kein Zeilenumbruch stattfinden
      afterskip=1sp plus -1sp minus 1sp,% etwas unsauber, aber erzeugt Zeilenumbruch (\newline funktioniert nicht)
      font=\normalsize% \bfseries kommt schon von Element disposition
      ]{section}  

\begin{document}
\chapter{Test}
\section{Test}
Erster Absatz nach Unterüberschrift
\par Der nachfolgende Abstand wirklich nicht?
\section{Test}
\section{Test}
\end{document}
Bild

Verfasst: Do 7. Jan 2016, 13:33
von Besserwisser
BTW: Für Abstände von 12pt müsste man noch die Schriftgröße 10pt einstellen. Bei der voreingestellten Dokumentschriftgröße 11pt hat man 13.6pt als Zeilenabstand und damit auch als Absatzabstand.

Verfasst: Do 7. Jan 2016, 16:56
von iTob
Allerdings sind 12pt in LaTeX auch nicht 12pt in Word ;-) Hier liegen verschiedene Definitionen des Punktes zu Grunde. Was Word macht weiß ich nicht, aber InDesign beispielsweise nimmt den Dito-Punkt, der in LaTeX mit der Einheit dd verfügbar ist.

Verfasst: Do 7. Jan 2016, 16:58
von u_fischer
iTob hat geschrieben:nimmt den Dito-Punkt
Buuuuh!

https://de.wikipedia.org/wiki/François_Ambroise_Didot