Section nach Subsection Zeilenabstand

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


TinTin82
Forum-Anfänger
Forum-Anfänger
Beiträge: 25
Registriert: Mo 21. Mai 2018, 10:49

Section nach Subsection Zeilenabstand

Beitrag von TinTin82 »

Hi,

ich habe mir eine eigene Dokumentenklasse in latex gebaut.

Jetzt habe ich das Problem, dass ich sehr große abstände zwischen zwei
nacheinander folgenden Überschriften bekomme.

Code: Alles auswählen

\section{Section2}
\subsection{Section2.1}
In meiner Dokumentenklasse habe ich die Zeile

Code: Alles auswählen

\large \bold \vspace{9 mm} \thechapter.\thesection.\thesubsection \hspace{1.0 mm} #1 \vspace{3.5 mm} \normalsize
Kann ich mir in Latex irgendwie merken, dass der letzte Befehl eine Überschrift gewesen ist, und entsprechend die

Code: Alles auswählen

\vspace{9 mm}
anweisung anpassen ??
Wenn ja wäre ein Beispiel toll.
Viele Grüße,
TinTin
Zuletzt geändert von TinTin82 am Sa 7. Sep 2019, 23:23, insgesamt 1-mal geändert.

Ratgeber

Zu wenig (wieder mal)

Beitrag von Ratgeber »

Mehr Kontext bitte.

TinTin82
Forum-Anfänger
Forum-Anfänger
Beiträge: 25
Registriert: Mo 21. Mai 2018, 10:49

Beitrag von TinTin82 »

In Meiner Klassendatei habe ich zum Beispiel Überschriften nach folgendem Schema definiert:

Code: Alles auswählen

\newcommand\subsection{\secdef\subsectiona\subsectionb}%
\newcommand\subsectiona[2][?]
{
    \normalsize
    \refstepcounter{subsection}                     % Section counter hochzählen,
                                                    % rest nullen
    \sectionmark{#1}                                % Marke für kolumnentitel
    \settowidth{\TOCTocCalcNumLength}{\thechapter.\thesection.\thesubsection}
    \setlength\TOCTocCalcLength{\TOCTocNumberLength-\TOCTocCalcNumLength}
    \addcontentsline{toc}{subsection}{\thechapter.\thesection.\thesubsection\hspace{\the\TOCTocCalcLength{}}#1}  % TOC entry
    \par
    % TODO: Schriftgröße wählen
    \large \bold \vspace{9 mm} \thechapter.\thesection.\thesubsection \hspace{1.0 mm} #1 \vspace{3.5 mm} \normalsize
    \par
}
\newcommand\subsectionb[1]
{
    \normalsize
    %\refstepcounter{section}                        % Section counter hochzählen,
                                                    % rest nullen
    \sectionmark{#1}                                % Marke für kolumnentitel
    %\addcontentsline{toc}{section}{\thechapter.\thesection  \hspace{4 mm} #1 }  % TOC entry
    \par
    % TODO: Schriftgröße wählen
    \large \bold \vspace{9 mm} \thechapter.\thesection.\thesubsection \hspace{1.0 mm} #1 \vspace{3.5 mm} \normalsize
    \par
}
Wenn ich jetzt zwei Überschriften nacheinander mache,
dann habe ich das Problem, dass der verikalabstand nach oben und nach unten zusammengerechnet wird. Einer würde jedoch, auf Grund von fehlendem Inhalt zwischen zwei überschriften, genügen.
Zu weit auseinander ist:

Code: Alles auswählen

\section{Section2}
\subsection{Section2.1}
Okay ist:
\section{Section2}
Ich bin ein toller text.
\subsection{Section2.1}
EDIT: Es sind noch mehrere Dinge zu tuen, aber momentan bin ich an diesem Problem und würde es auch gerne als erstes lösen.
EDIT2: Gibt es denn eine Möglichkeit herauszufinden, ob zwischen zwei Überschriften etwas steht, ein Bild, eine Tabelle, ein Text oder was auch immer, oder ob dort nicht steht ??

Gast

Beitrag von Gast »

Du solltest Überschriften grundsätzlich nicht in dieser Weise definieren. Bei Verwendung dieser Definition können Seitenumbrüche sowohl innerhalb der Überschrift als auch unmittelbar danach erfolgen, was grundsätzlich zu vermeiden ist. Darüber hinaus funktionieren LaTeX-Mechanismen zur Unterdrücken von Absatzeinzügen nach der Überschrift nicht (bzw. deren optionalem Abschalten, das bei einigen Sprachen erwünscht ist). Auch erfolgt ggf. der Umbruch nachdem die Markierung für den Kolumnentitel und der Eintrag ins Inhaltsverzeichnis erfolgte, was zu falschen Kolumnentiteln und Seitenangaben im Inhaltsverzeichnis führen kann.

Daher empfehle ich dringend entweder auf Basis einer flexiblen Klasse wie memoir oder KOMA-Script zu arbeiten und deren Befehle zum Konfigurieren von Überschriften zu verwenden oder auf Basis einer Standardklasse und zusätzlich eines Pakets wie titlesec oder aber zumindest die Grundlagen der Überschriftendefinition in der Dokumentation der Standardklassen (classes.dtx in den LaTeX-Quellen) und im dokumentierten LaTeX-Kernel source2e.pdf) und nachzulesen. Und beim Lesen in source2e kannst du dann auch gleich \addvspace nachlesen, das zur Lösung deines eigentlichen Problems geschaffen wurde, aber nur funktioniert, wenn die Abfolge von Abstandseinfügen und Befehlen, die weiteres Material ausgeben oder zwischen horizontalem und vertikalem Modus umschalten können. Bei dir passt das so nämluch auch noch nicht.

BTW: Wirklich \bold, nicht \bfseries?

Achja: Das von Ratgeber nachgefragt vollständige Minimalbeispiel hast du leider nicht geliefert. Ich würde allerdings empfehlen, erst meinen Ratschlag zu befolgen und dann, im Falle von Problemen mit dessen Umsetzung, dazu eine neue Frage mit Minimalbeispiel zu stellen.

Antworten