Kopfzeile und Abstände von Unter-/Kapitelüberschriften

Klassen und Pakete zur einfachen Umsetzung individueller Vorstellungen


eniem
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Mi 23. Apr 2014, 11:33
Wohnort: Graz

Kopfzeile und Abstände von Unter-/Kapitelüberschriften

Beitrag von eniem »

Hallo Golatexer ;),

ich bin momentan mit dem Nachbau eines Word-Dokumentes beschäftigt, was bisher recht gut funktioniert, mittlereweile sich aber bei mir Ratlosigkeit bei 'kleineren' Details breit macht.

Mein bisheriger Code sieht so aus:
\documentclass[oneside,openright,BCOR=5mm,paper=a4,fontsize=11pt]{scrbook}

\usepackage[T1]{fontenc}
\usepackage{ucs}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[automark]{scrpage2}
\usepackage{xcolor}

\usepackage{uarial}

\usepackage{geometry}
\geometry{a4paper, top=35mm, left=30mm, right=60mm, bottom=25mm, headsep=25mm, footskip=12mm}

\usepackage{mparhack}

\usepackage{mdframed}

\setlength{\marginparwidth}{4cm}
\setlength{\marginparsep}{1cm}
\setheadwidth[0pt]{textwithmarginpar}
\setfootwidth[0pt]{head}
\setlength{\parindent}{0cm}

\setkomafont{chapter}{\bfseries\Large\textcolor{darkgray}}  % Large = 14pt, wenn Standardschriftgroesse = 11pt
\setkomafont{section}{\bfseries\large\textcolor{darkgray}}  % large = 12pt, wenn Standardschriftgroesse = 11pt
\setkomafont{subsection}{\bfseries\normalsize\textcolor{darkgray}} % normalsize = 11pt
\setkomafont{subsubsection}{\bfseries\small\textcolor{darkgray}}   % small = 10pt

\color{darkgray}

\makeatletter
\renewcommand*{\chapterheadstartvskip}{\vspace*{-3.5\baselineskip}}% Abstand einstellen
\renewcommand*{\chapterheadendvskip}{\vspace*{0.0\baselineskip}}

\renewcommand{\familydefault}{\sfdefault}

\renewcommand\section{\@startsection{section}{1}{\z@}%
  {-0.0ex \@plus -1ex \@minus -.2ex}%
  {2.3ex \@plus.2ex}%
  {\ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\setlength{\parfillskip}{\z@
      plus 1fil}\fi
    \raggedsection\normalfont\sectfont\size@section}%
}

\newcommand\Chapter[2][]{\begin{mdframed}[linewidth=0.0pt, innerleftmargin=0, innerrightmargin=0, innertopmargin=2pt, innerbottommargin=0, backgroundcolor=lightgray, skipbelow=3cm]%
  \ifx\relax#1\relax\chapter{#2}\else\chapter[#1]{#2}\fi
  \end{mdframed}}
 
\newcommand\Section[2][]{\begin{mdframed}[linewidth=0.5pt, innerleftmargin=0, innerrightmargin=0, innertopmargin=2pt, innerbottommargin=2pt, linecolor=gray, skipabove=24pt]%
  \ifx\relax#1\relax\section{#2}\else\section[#1]{#2}\fi
  \end{mdframed}}

\let\oldmarginpar\marginpar
\renewcommand\marginpar[1]{\-\oldmarginpar[\color{black}\scriptsize #1]%
{\color{black}\scriptsize #1}}

\begin{document}

\pagestyle{scrheadings}
\clearscrheadfoot
\ohead[\headmark]{\headmark}
\ofoot[\pagemark]{\pagemark}
\setkomafont{pageheadfoot}{\textnormal}
 
\Chapter{Super}
Die Seitenränder und allgemeine Satzspiegel-Konstruktion wird dem integrierten Mechanismus von typearea überlassen. Dabei wird auf Basis von Papier- und Schriftgröße ein Seitenlayout berechnet, das typographischen Qualitätskriterien entspricht.

Oft bieten die KOMA-Skripts jene Options-Vielfalt, die vielen neuen und fortgeschrittenen Benutzern von LaTeX fehlt oder sehr kompliziert realisiert wird. Beliebt ist beispielsweise der verfügbare ,,Miniabschnitt`` den man in Standardklassen misst. Dabei handelt es sich um eine kleine, nicht numerierte Überschrift (Beispiele dafür sind in der KOMA-Dokumentation auf Seite 101f zu finden.
\Section{Salut}
In Textdokumenten sind Kopf- und Fußzeilen zur Darstellung generischer Inhalte wie der aktuellen Seite oder des aktuellen Kapitels üblich. Im Regelfall berechnet LaTeX für Ihr Dokument einen Satzspiegel, der Seitenbereiche für diese Elemente vorsieht. In diesem Abschnitt beschreiben wir, wie Sie Kopf- und Fußzeilen Ihren Wünschen mit Hilfe der KOMA-Erweiterung scrpage2 anpassen können. Dies ist ein Auszug aus der KOMA-Dokumentation ab Seite 214. Wir starten mit: \marginpar{A well-balanced line width improves the legibility of the text. That's what typography is all about, right?}
\subsection{Salut Salut}
Die Auswahl der richtigen Dokumentklasse ist eine Ihrer ersten Fragen im Umgang mit LaTeX. Die Standardklassen von sind: article, report und book. Wir empfehlen Ihnen, die Dokumentklassen und Erweiterungspakete des KOMA-Skripts zu verwenden. Aus der KOMA-Dokumentation:

Die Fähigkeiten von KOMA-Script reichen teilweise weit über die Fähigkeiten der Standardklassen hinaus. Manche davon sind auch als Ergänzung zu den Grundfähigkeiten des LaTeX-Kerns zu betrachten.
\subsubsection{test}
Neben der Anpassung von Layouts und Typographie an europäische Normen und Stile, beinhalten die KOMA-Skripts eine Vielzahl an vereinfachten Schnittstellen, die mehr Kontrolle über das Dokument bieten. Alleine die Mächtigkeit der Dokumentation verdeutlicht die Vielzahl der enthaltenen Optionen und Möglichkeiten.

Das KOMA-Skript stellt folgende alternative Klassen bereit: : Das Grundgerüst Ihrer minimalen Eingabedatei für deutsche Dokumente sieht dann in etwa so aus: 
\end{document}
Nun gibt es folgende Probleme:
- Aufgrund meiner Neudefinition von \Chapter{...} zur Erzeugung von grau hinterlegten Kapitelüberschriften werden diese nicht mehr in der Kopfzeile angezeigt. Ich gehe davon aus, dass \ohead[\headmark]{\headmark} "Headmarken" nur dann findet, wenn diese \chapter sind ... - dies ist ja bei mir nicht der Fall.
Nun dachte ich daran, dass die Lösung wohl sein wird nicht \Chapter{...} neu zu definieren, sondern \chapter{...} Umzudefinieren. Das habe ich mittels
\renewcommand\chapter[2][]{\begin{mdframed}[linewidth=0.0pt, innerleftmargin=0, innerrightmargin=0, innertopmargin=2pt, innerbottommargin=0, backgroundcolor=lightgray, skipbelow=3cm]%
  \ifx\relax#1\relax\chapter{#2}\else\chapter[#1]{#2}\fi
  \end{mdframed}}
versucht. - Das führt aber zu einem Fehler beim Kompilieren:
"[x]! LaTeX Error: Too deeply nested.
See the LaTeX manual or LaTeX Companion for explanation. [...]"


... hier bin ich leider mit meinem Latein am Ende und weiß nicht, wie ich das Lösen kann.

Die andere Sache betrifft Abstände: Um den Rahmen der (Unter-)Kapitelüberschriften auf deren Zeilenhöhe zu begrenzen, habe ich deren Abstände vor der jeweiligen Überschrift mittels
\renewcommand*{\chapterheadstartvskip}{\vspace*{-3.5\baselineskip}}% Abstand einstellen
\renewcommand*{\chapterheadendvskip}{\vspace*{0.0\baselineskip}}

\renewcommand\section{\@startsection{section}{1}{\z@}%
  {-0.0ex \@plus -1ex \@minus -.2ex}%
  {2.3ex \@plus.2ex}%
  {\ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\setlength{\parfillskip}{\z@
      plus 1fil}\fi
    \raggedsection\normalfont\sectfont\size@section}%
}
herabgesetzt. - Das funktioniert auch wunderbar. - Nun ist es aber so, dass zwischen nachfolgendem Text und der jeweiligen Überschrift (layoutbedingt) der vorhandene Abstand vergrößert werden muss. Ich dachte nun, dass das mittels "skipbelow= ..." aus dem mdframe-Package in der Rahmendefinition möglich sein müsste. ... Hier habe ich mich anscheinend geirrt, denn das funktioniert nicht. - Gibt es hier eine Möglichkeit den Abstand zwischen Folgetext und jeweiliger Überschrift (Kapitel- und Unterkapitel) zu vergrößern?

Und das dritte Problem betrifft den horizontalen Abstand der Kapitel-/Unterkapitelnummer von der jeweiligen Überschrift. Dieser Soll ebenfalls vergrößert werden und gleichzeitig Sollen die Überschriften Untereinander an derselben horizontalen Stelle stehen. - Im obigen Beispiel, sollte z.B. der Abstand zwischen 1 und "Super" etwa 3cm betragen. - Alle anderen Überschriften sollen dann dort beginnen, wo auch "Super" sein "S" hat; also dass letzlich die "S" von "Super", "Salut" und "Salut Salut" untereinanderstehen.

... soooh. Das war jz nicht wenig, aber ich hoffe dennoch, dass mir jemand weiterhelfen kann!

Beste Grüße,
eniem

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Aufgrund meiner Neudefinition von \Chapter{...} zur Erzeugung von grau hinterlegten Kapitelüberschriften werden diese nicht mehr in der Kopfzeile angezeigt. Ich gehe davon aus, dass \ohead[\headmark]{\headmark} "Headmarken" nur dann findet, wenn diese \chapter sind ... - dies ist ja bei mir nicht der Fall.
Sie sind schon da - du benutzt ja chapter - aber die Marken finden nicht aus der mdframed-Box heraus.

Du solltest nicht mdframed um den gesamten \chapter-Befehl tun. \chapter tut mehr also nur Text drucken. Definiere lieber \@@makechapterhead um. Ähnliches gilt für \section.
\usepackage{ucs} 
\usepackage[latin1]{inputenc}
Sowas ist quatsch. Entweder ist dein Dokument utf8 oder latin1 kodiert. Beides gleichzeitig geht nicht.

eniem
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Mi 23. Apr 2014, 11:33
Wohnort: Graz

Beitrag von eniem »

Sie sind schon da - du benutzt ja chapter - aber die Marken finden nicht aus der mdframed-Box heraus.

Du solltest nicht mdframed um den gesamten \chapter-Befehl tun. \chapter tut mehr also nur Text drucken. Definiere lieber \@@makechapterhead um. Ähnliches gilt für \section.
Danke für den Hinweis. Ich hab das jetzt probiert, aber komm irgendwie nicht zurecht damit ...:
\renewcommand\@makechapterhead[2][]{\begin{mdframed}[linewidth=0.0pt, innerleftmargin=0, innerrightmargin=0, innertopmargin=2pt, innerbottommargin=0, backgroundcolor=lightgray]%
  \ifx\relax#1\relax#2\else#2\fi
  \end{mdframed}}
... so verschwindet irgendwie die ursprüngliche \chapter-Schriftgröße und die Nummerierung bzw. die Schriftfarbe ist auch nicht die, die es sein soll ... :/
Sowas ist quatsch. Entweder ist dein Dokument utf8 oder latin1 kodiert. Beides gleichzeitig geht nicht.
Ah, danke für den Hinweis - das war keine Absicht! =)

Lieber Gruß,
eniem

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Also erstens schrieb ich \@@makechapterhead und nicht \@makechapterhead. Und zweitens solltest du dir schon die Originaldefinition etwas zu Gemüte führen und die wichtigen Teile davon übernehmen.

eniem
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Mi 23. Apr 2014, 11:33
Wohnort: Graz

Beitrag von eniem »

Alles klar ...
folgendes Konstrukt löst mir auch mein Problem mit den Abständen, außerdem kann ich mir die reDefinition von \chapterheadstartvskip etc. sparen ...
\renewcommand\@@makechapterhead[1]{
	\begin{mdframed}[linewidth=0.0pt, innerleftmargin=0, innerrightmargin=0, innertopmargin=2pt, innerbottommargin=0, backgroundcolor=lightgray]
  {%
    \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
    \normalfont\sectfont\nobreak\size@chapter{}%
    \if@chapterprefix
      \let\@tempa\raggedsection
    \else
      \let\@tempa\@hangfrom
    \fi
    \@tempa{\ifnum \c@secnumdepth >\m@ne%
        \if@mainmatter
          \if@chapterprefix
            \expandafter\size@chapterprefix
          \else
            \expandafter\size@chapter
          \fi
          {\chapterformat}%
          \if@chapterprefix
            \size@chapterprefix{}\endgraf\nobreak\vskip.5\baselineskip
          \fi
        \fi
      \fi
    }%
    {\raggedsection \interlinepenalty \@M \size@chapter{#1}\par}}%
  \nobreak
	\end{mdframed}
	\vspace*{0.5\baselineskip}
}
... ich mein, es macht jetzt das, was ich will. Ohne Fehler. Aber macht man das so? Ist das schönes Latex? (also v.A. dieses \vspace am Ende ...

Jetzt bliebe nur noch das Problem mit dem Abstand bzw. der horizontalen Ausrichtung zwischen Kapitel/Section-Nummer und Kapitel/Section-Überschrift ...

Gruß
eniem

eniem
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Mi 23. Apr 2014, 11:33
Wohnort: Graz

Beitrag von eniem »

u_fischer hat geschrieben:[...] Definiere lieber \@@makechapterhead um. Ähnliches gilt für \section.
Hmh. Wie meinst du das für section? Da gibt's anscheinend nichts wie "makesectionhead" in die Richtung ...

Und was die Abstände betrifft zwischen der Nummerierung. Das müsste doch irgendwie mit '\othersectionlevelsformat' machbar sein? Letztlich sollen die Überschriften bei jenem Horizontalabstand beginnen an welchem auch die der tiefsten Gliederungsebene (in meinem Fall \subsection) beginnen ...

Liebe Grüße,
eniem

Antworten