Kein Einrücken des Absatzes nach Abbildungen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Kein Einrücken des Absatzes nach Abbildungen

von u_fischer » Do 2. Apr 2015, 10:47

Besserwisser hat geschrieben:
u_fischer hat geschrieben:Also *in* einem Absatz sollte man figure sowieso nicht verwenden, der Float wird ja sowieso in jedem Fall danach eingefügt.
Nö:
Damn, schon wieder geht ein Vorurteil den Bach runter ;-). Woran man sieht, dass ich nie ersthaft versucht habe Floats in Absätzen zu benutzen.

von Noch so einer » Do 2. Apr 2015, 10:12

Eigentlich muss du den Befehl AFAIK nur beim Absatz unmittelbar nach der Gleitumgebung einfügen. Eventuell funktioniert sogar ein:
\usepackage{xpatch}
\xappto{\endfigure}{\aftergroup\noindentiffloatbefore}{}{}
Die Gleitumgebung wird ja entweder genau an der Stelle eingefügt oder top, bottom oder page. Etwas eigenartig mag aber sein, dass wenn zufällig am Seitenanfang ein Absatz unter einer top-platzierten Gleitumgebung eingefügt wird, in dem Fall der Absatz eingezogen wird, denn der Fall wird von meinem Code nicht erfasst.

von ArrY » Do 2. Apr 2015, 09:41

danke für die Mühe!

Meine floats sind auf jeden Fall immer nur zwischen separaten Absätzen im Quelltext eingefügt.

Dann müsste ich diesen neuen Befehl allerdings ja vor jeden Absatz im gesamten Dokument einfügen.. Ich probiere mal ein bisschen damit herum, ob das zuverlässig funktioniert (sowohl mit figures als auch mit tables).

Falls es doch eine elegante Mögl. gibt das quasi als globale Dokumenten-Option einzufügen, wäre ich natürlich daran weiterhin sehr interessiert!

VG
ArrY

von Noch so einer » Mi 1. Apr 2015, 21:26

Achso: Das funktioniert natürlich nur, solange man alle Floats wirklich zwischen Absätzen einfügt. Sonst wird ein späteres \noindentiffloatbefore ggf. den Einzug verhindern, obwohl der Absatz nicht unmittelbar auf eine Gleitumgebung folgt. Und ob das mit LaTeX 2015/01/01 noch funktioniert, weiß ich auch nicht. Da ist angeblich auch in der output-Routine einiges geändert. Und ob es überhaupt immer wie gewünscht funktioniert, ist mir auch nicht ganz klar.

von Noch so einer » Mi 1. Apr 2015, 21:24

\intextsep wird in der output-Routine eingefügt. Deshalb ist am entsprechenden Absatzanfang dann beispielsweise \lastskip trotzdem 0pt und ein Einpatchen von \noindent funktioniert an der Stelle, an der der zweite \vskip\intextsep eingefügt wird, auch nicht.

Was funktionieren könnte, ist das Einpatchen eines globalen Schalters:
\documentclass{article}
\usepackage{xpatch}
\newif\iffloatbefore
\renewcommand*{\floatbeforetrue}{\global\let\iffloatbefore\iftrue}
\renewcommand*{\floatbeforefalse}{\global\let\iffloatbefore\iffalse}
\makeatletter
\xpatchcmd{\@addtocurcol}{\vskip\intextsep}{\vskip\intextsep\floatbeforetrue}{}{\FAIlure}
\makeatother
\newcommand*{\noindentiffloatbefore}{%
  \iffloatbefore\expandafter\expandafter\expandafter\floatbeforefalse\noindent\fi
}
\usepackage{mwe}
\begin{document}
\noindentiffloatbefore\blindtext

\begin{figure}[htbp]
\caption{Testfloat}
\end{figure}

\noindentiffloatbefore\blindtext

\noindentiffloatbefore\blindtext

\noindentiffloatbefore\blindtext

\begin{figure}
\caption{Testfloat}
\end{figure}

\noindentiffloatbefore\blindtext

\noindentiffloatbefore\blindtext

\noindentiffloatbefore\blindtext

\noindentiffloatbefore\blindtext

\end{document}
Es stattdessen per \everypar in \@addtocurcol quasi automatisch zu lösen, ist mir nicht gelungen. Das kann aber auch an der vorgerückten Stunde liegen.

von Besserwisser » Mi 1. Apr 2015, 20:48

u_fischer hat geschrieben:Also *in* einem Absatz sollte man figure sowieso nicht verwenden, der Float wird ja sowieso in jedem Fall danach eingefügt.
Nö:
\documentclass{article}
\usepackage{blindtext}
\begin{document}
\blindtext
\begin{figure}[htbp]
\caption{Testfloat}
\end{figure}
\blindtext

\blindtext
\end{document}
Ganz brutal nach der aktuellen Zeile aber nicht nach dem aktuellen Absatz.

von u_fischer » Mi 1. Apr 2015, 18:54

Ich lasse mich ja gerne eines besseren belehren, dachte nur, dass man das ja an jedem vorhandenen Dok. schnell überprüfen könnte.
Wenn man gerade ein passendes zur Verfügung hat, sonst muss man es erstellen oder eines suchen.
Aber hier wäre so ein Minimalbeispiel mit 3 Absätzen,
Ich habe derzeit einen schweren Anfall von "ich-will-nicht-dauernd-nach-Minimalbeispielen-fragen-und-erklären-wieso-man-die-braucht"-Fieber und werde daher die Frage erstmal auf Eis legen. Vielleicht geht es mir ja nächste Woche besser.

von ArrY » Mi 1. Apr 2015, 18:27

u_fischer hat geschrieben:Nun, jetzt schadet es dir, dass du die paar Minuten für die 5-6 Zeilen Minimalbeispiel nicht investiert hast.
Ich lasse mich ja gerne eines besseren belehren, dachte nur, dass man das ja an jedem vorhandenen Dok. schnell überprüfen könnte. Aber hier wäre so ein Minimalbeispiel mit 3 Absätzen, wobei der letzte nach dem Bild im Ideal (für mich) dann nicht eingerückt wäre.
\documentclass[
a4paper, 
12pt,
headsepline,
headings=normal,								
numbers=noenddot,  
DIV12,
]{scrreprt} 

\usepackage{blindtext}

\begin{document}

\section{Beispiel-Ueberschrift}

\blindtext %ein Paragraph, der korrekterweise nicht eingerückt wird, weil unter einer section

\blindtext %noch ein Paragraph, der richtigerweise eingerückt wird

\begin{figure}[htbp]
	\centering
  \rule{2cm}{2cm}
  \caption{Beispielbild} 
\end{figure}

\blindtext % noch ein Paragraph, der nicht eingerückt werden sollte.

\end{document}
Wie man ggfs \intextsep nutzen kann, ist mir aber noch nicht klar

von u_fischer » Mi 1. Apr 2015, 17:21

Nun, LaTeX weiß schon, wann ein Float ein "here"-Float ist, es fügt dann z.B. den Abstand \intextsep ein. Und Listen erkennen, ob Text danach mit oder ohne Leerzeile eingefügt wurde und passen den Einzug an. Aber ohne Testdokument kann man natürlich nicht ausprobieren, ob man das irgendwie kombinieren kann.
PS: Habe mein Minimalbeispiel gemacht, da die Frage ja globalgalaktisch gilt, ich wüsste nicht, wie das helfen könnte.
Nun, jetzt schadet es dir, dass du die paar Minuten für die 5-6 Zeilen Minimalbeispiel nicht investiert hast.
Besserwisser hat geschrieben:Wie soll man dann wissen, dass die Abbildung zwischen zwei Absätzen und nicht in einem Absatz eingefügt wird?
Also *in* einem Absatz sollte man figure sowieso nicht verwenden, der Float wird ja sowieso in jedem Fall danach eingefügt. Aber dass Intextfloats anders als top- und bottom-Floats behandelt werden, ist ja nicht grundsätzlich falsch.

von ArrY » Mi 1. Apr 2015, 16:21

Danke für die AW'en.

Leider muss ich tatsächlich Platz sparen, daher kommt ein parskip nicht in Frage. Was leider nicht funktioniert ist, dass der Befehl \noindent einfach letzter Befehl der Gleitumgebung ist und sich dann auf den danach folgenden Absatz auswirkt..

Ich lasse bisher bei meinen Floating-Umgebungen [htbp] zu und fand es vom Layout her immer gut. Es hat mir gefallen, dass flachere Abbildungen auch mal mitten im Text stehen. Vielleicht probiere ich aber mal aus es auf [tb] zu reduzieren, dann dürfte er es häufiger "echt" in den Text einbauen und weniger auf die von mir im Code gemachten Absätze Rücksicht zu nehmen, vllt entschärft es sich dadurch.

Meine Hoffnug war tatsächlich, dass es einen Befehl gibt. Denn "man" (Autor) kann es nicht wissen, wo die floatings stehen. Das Tool beim Ausführen weiß es aber schon un könnte theoretisch darauf durch Anpassung des Absatzbeginns darauf reagieren..

Nach oben