Seite 1 von 1

Leeres kapitel erkennen

Verfasst: So 1. Sep 2019, 21:04
von TinTin82
Hi,

gibt es eigentlich eine Möglichkeit zu erkennen ob ein Kapitel keinen Inhalt hat ?

Also zum Beispiel:

Code: Alles auswählen

\section{Section2}
\subsection{Section2.1}
von

Code: Alles auswählen

\section{Section2}
Ich bin ein toller Inhalt
\subsection{Section2.1}
Ich bin auch ein toller Inhalt
zu unterscheiden ?

Verfasst: So 1. Sep 2019, 22:50
von u_fischer
Im Prinzip schon, aber nicht so wie du deine \section der anderen Frage nach definiert hast. Warum verwendest du nicht \@startsection oder die Möglichkeiten, die die KOMA-Klassen bieten?

Verfasst: Mo 2. Sep 2019, 00:23
von TinTin82
Hi Ulrike,

danke für Deine Antwort.
Ich möchte es um ehrlich zu sein mal ohne versuchen.
Auch um mich in Tex und Latex etwas besser einzuarbeiten.

Kannst Du mir ein bisschen einen Hint geben, in welche Richtung ich suchen muss oder mir sogar ein kleinen Beispiel zeigen wie man soetwas löst ?

Viele Grüße,
TinTin

Verfasst: Mo 2. Sep 2019, 08:10
von saputello
viewtopic,p,108010.html#108010 (das war ich übrigens auch, wurde zwischendurch aber leider ausgeloggt, was mir leider immer mal wieder passiert).

Verfasst: Mo 2. Sep 2019, 08:58
von u_fischer
Nun, wenn du lernen willst: Schau in latex.ltx. Der \@startsection-code beginnt etwa in Zeile 6079 und hat nur etwa 100 kurze Zeilen. Eine kommentierte Version des Codes bekommst du mit texdoc source2e (ab Seite 372).

Verfasst: Mo 2. Sep 2019, 12:46
von TinTin82
Hi Ulrike,

Vielen Dank für die tolle Hilfe.
Also so ganz klar, was hier passiert ist es mir nicht. Aber ich denke irgendwo muss ich auch anfangen.

Code: Alles auswählen

\def\@startsection#1#2#3#4#5#6{%
  \if@noskipsec \leavevmode \fi
  \par
  \@tempskipa #4\relax
  \@afterindenttrue
  \ifdim \@tempskipa <\z@
    \@tempskipa -\@tempskipa \@afterindentfalse
  \fi
  \if@nobreak
    \everypar{}%
  \else
    \addpenalty\@secpenalty\addvspace\@tempskipa
  \fi
  \@ifstar
    {\@ssect{#3}{#4}{#5}{#6}}%
    {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
Ich habe herausgefunden, dass ich zum Beispiel auch mit:

Code: Alles auswählen

\@tempskipa 9mm\relax
\addpenalty\@secpenalty\addvspace\@tempskipa
meine 9 mm Abstand bekomme.
Was ich nicht verstehe ist, wo die Information herkommen soll,
ob die 9 mm eingerückt werden sollen oder nicht.

Mir ist nicht klar, wie

Code: Alles auswählen

\if@nobreak
als informationsträger funktioniert. Ist das ein "Flage" welches vorher
auf Grund anderen Funktionen entsprechen gesetzt wird ??
(Bei assembler gibt es ja sowas wie Zero flags etc, ist das hier ähnlich ?? )

Grüße,
TinTin