Fancy Kopf- und Fußzeile nachbauen

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: Fancy Kopf- und Fußzeile nachbauen

von esdd » Do 18. Sep 2014, 15:51

Das mit den Kapiteln ist keine Nebensächlichkeit. Du hast eine LaTeX-Frage und solltest deshalb auch die dafür richtigen Begriffe verwenden. Schließlich möchtest Du, dass andere Deinen Wunsch verstehen.

Dein ungewöhnlicher Kopfzeilenwunsch dürfte sich mit etwas wie
\documentclass{scrartcl} 
\usepackage{mwe} 
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage[ngerman]{babel} 
\usepackage{lastpage} 
\usepackage{datetime} 
\settimeformat{hhmmsstime} 
\renewcommand{\timeseparator}{-} 
\newcommand{\lz}[1]{\ifnum #1<10 0\the#1\else\the#1\fi} 

\usepackage[headsepline,footsepline,automark]{scrlayer-scrpage} 
\renewcommand*{\sectionmark}[1]{\markboth{\sectionmarkformat#1}{}} 
\renewcommand*{\addsecmark}[1]{\markboth{#1}{}} 
\renewcommand*{\subsectionmark}[1]{\markright{\subsectionmarkformat#1}} 

\makeatletter
\providecommand*{\lefttopmark}{\expandafter\@leftmark\topmark\@empty\@empty} 
\providecommand*{\righttopmark}{\expandafter\@rightmark\topmark\@empty\@empty} 
\makeatother 

\ohead{\ifstr{\righttopmark}{\lefttopmark}{}{\righttopmark}} 
\ihead{\lefttopmark} 
\chead{} 

\ofoot{\thepage /\pageref{LastPage}} 
\ifoot{\jobname\ \the\year-\lz{\month}-\lz{\day}\_\currenttime} 
\cfoot{} 
\setkomafont{pageheadfoot}{\normalfont} 

\title{Test} 
\author{Tester} 

\begin{document} 
\maketitle 
\tableofcontents 
\blinddocument\blinddocument 
\blinddocument\blinddocument 
\blinddocument\blinddocument 

\clearpage 
\subsection{Ein Unterabschnitt} 
\subsection{Ein zweiter Unterabschnitt} 
\clearpage 
\section{Ein Abschnitt} 
\section{Ein zweiter Abschnitt} 
\addsec{Ein Abschnitt ohne Nummer} 

\end{document}
teilweise realisieren lassen. Ich weiß allerdings nicht, wie bzw. ob es überhaupt möglich ist, den Eintrag der vorhergehenden Abschnittsüberschrift zu verhindern, wenn eine neue ganz oben auf der Seite steht, also gar kein Text des vorhergehenden Abschnittes oberhalb der neuen Überschrift steht. Mit obigem Code tritt das zum Beispiel auf Seite 7 auf. Auf der steht nur Inhalt vom 4.Abschnitt, in der Kopfzeile jedoch noch die Überschrift vom 3.Abschnitt. Aber so weißt Du wenigstens, welcher Abschnitt davor kam ;-) Diese Kopfzeile ist hoffentlich nur für die Erstellungs- und Korrekturphase gedacht und nicht für das fertige Dokument?

Bezüglich der Linien: Auch ein hat "ziemlich am Ende" geschrieben, was nicht heißt, dass es ganz am Ende steht ;-) Vielleicht liest Du einfach alles zum Thema Linien in dem Kapitel zu scrlayer-scrpage? Es ist wirklich einfach und wäre auch zu finden, wenn man im Umfeld der Dir bekannten Option headsepline sucht.

Gruß
Elke

PS: Falls Du vorher eine entsprechende Lösung mit fancyhdr hattest, wäre es gut, wenn Du diese hier angibst.

von u_fischer » Do 18. Sep 2014, 15:29

Aber ich habe keinen Ansatz, wie man das Umsatzen könnte. Wie bezieht man sich auf die letzte \section? Darf man in der \sectionmark überhaupt \if-Anweißungen setzten? Ist das überhaupt der richtige Weg?
Anweißungen? Das schreibt man doch Anschwarzungen

Abgesehen davon: Ja, du wirst \if-Befehle benötigen. Das, was du da anscheinend vorhast, funktioniert gut in einer Klasse mit \chapter + \section, weil \chapter immer eine neue Seite beginnt. In einer Artikelklasse mit \section + \subsection musst du immer mit dem Problem kämpfen, dass vor \section auf der gleichen Seite noch Kram von der vorherigen \section sein kann, oder dass auf einer Seite zwei \section-Befehle sein können.

Das Problem hat übrigens nichts mit srclayer zu tun. Ich glaube daher nicht, dass du vorher eine funktionierende Lösung mit fancyhdr hattest.

von Crys » Do 18. Sep 2014, 14:35

Besserwisser hat geschrieben:[...]Darüber hinaus wird im Abschnitt über die Gliederung [...] ganz klar zwischen Kapitel bei diesen beiden Klassen vs. Abschnitt beil scrartcl unterschieden.[...]
Ok, das akzeptiere ich.

Als ich heute im 10 Uhr den Thread wieder geöffnet habe, hatte ich nur meine Problemstellung um Kopf und nicht mehr die alte Diskussion vom Kapitel. Weshalb ich (ohne einen Gedanken daran zu verschwenden) einfach dieses Wort verwendet habe. Was im Nachhinein natürlich ein Fehler war.
Meine Reaktion auf die wieder ausgebrochene Diskussion zu diesen Wort war nicht korrekt, aber ich kann nicht verstehen, dass man sich mit so Nebensächlichkeiten beschäftigt, wenn mein Problem doch recht komplex ist (für mich jedenfalls).
Auch ein hat geschrieben:Wenn man den \ifstr-Vergleich, den "Noch so einer" erwähnt und ganz ähnlich in seinem ersten Beitrag gezeigt hat, mit der Lösung aus seinem zweiten Beitrag kombiniert, wird IMHO genau das erreicht, was der OP verlangt.
Sorry, ich kann damit leider nichts anfangen, ich sehe nicht was mit was kombinieren.
Das Schema weiß ich: "Wenn Inhalt von vorheriger Seite auf der Seite und \section auf vorhergehender Seite, dann füge \section-Titel ein. Wenn Inhalt von vorheriger Seite auf der Seite und \subsection auf vorhergehender Seite, dann füge \subsection-Titel ein. Wenn kein Inhalt von vorheriger Seite auf der Seite und \section auf dieser Seite, dann füge nichts ein. Wenn kein Inhalt von vorheriger Seite auf der Seite und \subsection auf dieser Seite, dann füge nichts ein." Das ist es glaube ich schon.
Aber ich habe keinen Ansatz, wie man das Umsatzen könnte. Wie bezieht man sich auf die letzte \section? Darf man in der \sectionmark überhaupt \if-Anweißungen setzten? Ist das überhaupt der richtige Weg?
Auch ein hat geschrieben:[...] das Kapitel zu scrlayer-scrpage nicht einfach einmal liest. Dann wüsste er doch auch längst, wie man die Linien in Kopf und Fuß bei scrheadings und dem zugehörigen plain-Seitenstil manipuliert. [...] Aber es sind ja nur 24 Seiten und eigentlich findet man es sogar beim sehr schnellen Querlesen recht leicht und schnell.
Gelesen habe ich das Kapitel schon mehrfach, aber "nur" 24 Seiten sind relativ. Dann noch mal das Kapitel Gliederung, Dokumenttitel und an etlichen anderen Stellen geschaut, weil ich habe einfach nicht das Verständnis und Hintergrundwissen wie ihr und muss ständig noch mal nachschlagen, auch wenn das meist in die Sackgasse führt. Und schon sind 7h vergangen, ohne was anderes zu tuen. Und das Frustrierende ist: ohne Ergebnis.
Auch ein hat geschrieben:OK, das steht ziemlich am Ende des Kapitels.
Damit meinst du "ilines,clines,olines"? Das habe ich schon als optionalen Parameter zur Klasse und scrlayer-scrpage-paket hinzugefügt, aber es tut sich nichts. Ich weiß einfach nicht wo das hin kommt bzw. ob das überhaupt richtig ist oder wieder ne Sackgasse.

von Auch ein » Do 18. Sep 2014, 12:32

Wenn man den \ifstr-Vergleich, den "Noch so einer" erwähnt und ganz ähnlich in seinem ersten Beitrag gezeigt hat, mit der Lösung aus seinem zweiten Beitrag kombiniert, wird IMHO genau das erreicht, was der OP verlangt. Warum er das nicht macht, sondern hier weiter auf seiner Sprachverwirrung besteht, ist mir ein Rätsel. Ebenso ist mir ein Rätsel, warum er das Kapitel zu scrlayer-scrpage nicht einfach einmal liest. Dann wüsste er doch auch längst, wie man die Linien in Kopf und Fuß bei scrheadings und dem zugehörigen plain-Seitenstil manipuliert. OK, das steht ziemlich am Ende des Kapitels. Aber es sind ja nur 24 Seiten und eigentlich findet man es sogar beim sehr schnellen Querlesen recht leicht und schnell.

@Besserwisser: Du hast im Zitat aus dem scrguide ein Stück eines weiteren Satzes mit zitiert, das wohl für den Zusammenhang unerheblich ist …

von Besserwisser » Do 18. Sep 2014, 12:14

Crys hat geschrieben:"Ka­pi­tel, das: Abschnitt eines Textes in einem Schrift- oder Druckwerk [...]" [duden].
Das heißt lediglich, dass ein Kapitel ein Abschnitt ist, so wie Blau eine Farbe ist. Es heißt aber nicht, dass jeder Abschnitt ein Kapitel ist, genau wie auch nicht jede Farbe Blau ist.
Crys hat geschrieben:Wenn du mir nicht eine Quelle nennst, in der steht, dass in einem deutschen Artikel es keine Kapitel gibt, dann bleibe ich bei meiner Definition.
Markus Kohm in scrguide.pdf hat geschrieben:Bei der Klasse scrartcl ist die oberste Gliederungsebene unter dem Teil der Abschnitt. unterstützt scrartcl diese Option nicht.
Darüber hinaus wird im Abschnitt über die Gliederung immer dann, wenn Kapitel erwähnt werden, die Markierung für "nur scrbook und nur scrreprt" verwendet, und ganz klar zwischen Kapitel bei diesen beiden Klassen vs. Abschnitt beil scrartcl unterschieden. Tja, was gilt nun wohl, deine (oben demonstrierte Fehl-)Interpretation des DUDEN oder die Anleitung zur verwendeten Klasse?

von Noch so einer » Do 18. Sep 2014, 12:04

@esdd:Eigentlich hatte ich schon nach der ersten Antwort keine Lust mehr, weiter zu spekulieren, als der OP nicht einsehen wollte, dass seine Erklärungen nicht ausreichend sind und er mit allen ernstes unterstellte, mir sein wenig erhellendes Beispiel nicht angesehen zu haben. Dass er jetzt nicht einsehen will, dass die oberste Gliederungsebene unter dem Teil bei scrartcl der Abschnitt ist, obwohl das deutlich in der Anleitung steht und die ja wohl wissen wird, was scrartcl bietet, macht es nicht besser. Wenn eigentlich klar definierte Begriffe beliebig angewendet werden, dann bezweifle ich, dass ich eine zielgerichtete, verbale Kommunikation führen kann. Ich werde mich also ausklinken.

von Crys » Do 18. Sep 2014, 11:54

Noch so einer hat geschrieben:Ich glaube, man hat Dir bereits erklärt, dass scrartcl keine Kapitel hat. Bei scrartcl gibt es Teile, Abschnitte und Untergliederungen davon. Wenn Du Kapitel willst, solltest Du scrreprt oder scrbook verwenden.
scrartcl hat keine \chapter. Beides sind Skriptbefehle und keine Bezeichnungen für Satz-Bausteine in der deutschen Sprache. In einem Artikel gibt es Überschriften und die erste Überschrift wird idR als Kapitel bezeichnet: "Ka­pi­tel, das: Abschnitt eines Textes in einem Schrift- oder Druckwerk [...]" [duden]. Nicht mehr, aber auch nicht weniger.
Wenn du mir nicht eine Quelle nennst, in der steht, dass in einem deutschen Artikel es keine Kapitel gibt, dann bleibe ich bei meiner Definition.

Aber darüber möchte ich nicht diskutieren, denn ich habe unmissverständlich klar gemacht, was ich meine. Persönliche Definitionen hin oder her.
Noch so einer hat geschrieben:Achja: Ich muss Dir sicher keine Seiten in der KOMA-Script-Anleitung nennen. Schließlich gibt es einen Befehlsindex, so dass man alle Befehle gezielt nachlesen kann und es gibt ein Inhaltsverzeichnis, so dass man sich auch gezielt zu bestimmten Themen informieren kann.
Der Befehlsindex ist super, wenn man genau weiß welchen Befehl man verwenden muss. Was bei mir nicht der Fall ist.

Mit den optionalen Parametern von \#foot und \#head kann man den Inhalt der Kopf- und Fußzeilen beeinflussen. Aber die Linien!?

\documentclass{scrartcl}
\usepackage{mwe}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{lastpage}
\usepackage{datetime}
\settimeformat{hhmmsstime}
\renewcommand{\timeseparator}{-}
\newcommand{\lz}[1]{\ifnum #1<10 0\the#1\else\the#1\fi}

\usepackage[headsepline,footsepline]{scrlayer-scrpage}
\renewcommand*{\sectionmark}[1]{\markboth{\sectionmarkformat#1}{}}
\renewcommand*{\addsecmark}[1]{\markboth{#1}{}}
\renewcommand*{\subsectionmark}[1]{\markright{\subsectionmarkformat#1}}

\ohead{\rightmark}
\ihead{\leftmark}
\chead{}
\ofoot[\thepage /\pageref{LastPage}]{\thepage /\pageref{LastPage}} 
\ifoot[\jobname\ \the\year-\lz{\month}-\lz{\day}\_\currenttime]{\jobname\ \the\year-\lz{\month}-\lz{\day}\_\currenttime} 
\cfoot[]{}
\setkomafont{pageheadfoot}{\normalfont}
\pagestyle{scrheadings}

\title{Test}
\author{Tester}

\begin{document}
\maketitle
\tableofcontents
\blinddocument\blinddocument
\blinddocument\blinddocument
\blinddocument\blinddocument

\clearpage
\subsection{Ein Unterabschnitt}
\subsection{Ein zweiter Unterabschnitt}
\clearpage
\section{Ein Abschnitt}
\section{Ein zweiter Abschnitt}
\addsec{Ein Abschnitt ohne Nummer}

\end{document}
Noch mal dazu:
crys hat geschrieben:Problem ist jetzt, dass ein Kapitel auf der Seite beginnt, aber noch abschnitte von einem anderen Kapitel auf der Seite ist. Dann ist es uninteressant, wenn in der Kopfzeile die aktuelle Kapitelbezeichnung steht (wie im Beispiel auf Seite 5), sondern es sollte der letzte Titel da stehen.

Das selbe gilt auch für Unterkapitel (bzw. Abschnitte, eben eine Ebene darunter).
Das heißt konkrett für die Kopfzeilen (im Beispiel aus diesem Post):
Seite 3: Inhaltsverzeichnis
Seite 4: 1 Heading on level 1 (section) | 1.1 Heading on level 2 (subsection)
Seite 5: 2 Lists
Seite 6: 3 Heading on level 1 (section)
usw.
Also immer wenn Inhalt noch von der letzten Ebene 1 bzw. Ebene 2 (bei scrartcl ist das \section bzw. \subsection) auf der Seite dargestellt, dann soll der Titel von diesen Inhalt dargestellt werden.

von esdd » Do 18. Sep 2014, 11:30

Spätestens jetzt sollte Dir klar sein, dass Dein Eingangsbeispiel nicht zeigt, was Du möchtest und dass Du nicht einfach die Ausgabe von fancyhdr nachgebaut haben möchtest, wie es im Titel der Frage steht. Das würde mein Beispiel leisten. Wir haben aber keine Chance zu verstehen, was Du möchtest, wenn Du Begriffe anders als üblich verwendest. Wie schon mehrfach erwähnt, gibt es Kapitel nur bei scrreprt und scrbook. Der Befehl heißt \chapter. Ein Kapitel beginnt immer eine neue Seite, weshalb auf einer Kapitelanfangsseite kein Text des vorhergehenden Kapitels mehr steht.

Verstanden habe ich, dass die Fußzeile auf den Seiten mit dem Seitenstil plain genauso wie auf den anderen Seiten aussehen soll. Das ist nun aber wirklich einfach in der Anleitung zu finden ...

@Noch so einer Ich vermute, es soll gar nicht \botmark sondern \topmark sein. Und das aber wahrscheinlich nur, wenn keine Überschrift der jeweiligen Gliederungsebene direkt am Anfang der Seite steht. Ob diese Unterscheidung überhaupt möglich ist, ist mir aber unklar.

Gruß
Elke

von Noch so einer » Do 18. Sep 2014, 10:36

Ich glaube, man hat Dir bereits erklärt, dass scrartcl keine Kapitel hat. Bei scrartcl gibt es Teile, Abschnitte und Untergliederungen davon. Wenn Du Kapitel willst, solltest Du scrreprt oder scrbook verwenden.

Wenn du tatsächlich immer nur die unterste Gliederungsebene haben willst, dann würde ich schlicht:
\usepackage[headsepline,footsepline]{scrlayer-scrpage}
\automark{section}
\automark*{subsection}
\automark*{subsubsection}
\automark*{paragraph}
\automark*{subparagraph}
%\renewcommand*{\sectionmark}[1]{\markboth{{\sectionmarkformat#1}}{}}
%\renewcommand*{\addsecmark}[1]{\markboth{{#1}}{}}
%\renewcommand*{\subsectionmark}[1]{\markright{\subsectionmarkformat#1}}

%\ohead{\rightmark}
\ihead{\leftmark}
\chead{}

\ofoot{\thepage /\pageref{LastPage}}
\ifoot{\jobname\ \the\year-\lz{\month}-\lz{\day}\_\currenttime}
\cfoot{}
empfehlen.

Wenn hingegen \rightmark wie \leftmark die letzte Marke verwenden soll, dann:
\documentclass{scrartcl}
\usepackage{mwe}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{lastpage}
\usepackage{datetime}
\settimeformat{hhmmsstime}
\renewcommand{\timeseparator}{-}
\newcommand{\lz}[1]{\ifnum #1<10 0\the#1\else\the#1\fi}

\usepackage[headsepline,footsepline,automark]{scrlayer-scrpage}
\renewcommand*{\sectionmark}[1]{\markboth{{\sectionmarkformat#1}}{}}
\renewcommand*{\addsecmark}[1]{\markboth{{#1}}{}}
\renewcommand*{\subsectionmark}[1]{\markright{\subsectionmarkformat#1}}

\makeatletter
\providecommand*{\rightbotmark}{\expandafter\@rightmark\botmark\@empty\@empty}
\makeatother

\ohead{\rightbotmark}
\ihead{\leftmark}
\chead{}

\ofoot{\thepage /\pageref{LastPage}}
\ifoot{\jobname\ \the\year-\lz{\month}-\lz{\day}\_\currenttime}
\cfoot{}
\setkomafont{pageheadfoot}{\normalfont}

\title{Test}
\author{Tester}

\begin{document}
\maketitle
\tableofcontents
\blinddocument\blinddocument
\blinddocument\blinddocument
\blinddocument\blinddocument

\clearpage
\subsection{Ein Unterabschnitt}
\subsection{Ein zweiter Unterabschnitt}
\clearpage
\section{Ein Abschnitt}
\section{Ein zweiter Abschnitt}
\addsec{Ein Abschnitt ohne Nummer}

\end{document}
Wobei Du dann im Inhaltsverzeichnis wieder zwei gleiche Marken hast, was man aber mit \ifstr beseitigen kann. Das hatte ich auch schon gezeigt, kann es mir also hier sparen.

Achja: Ich muss Dir sicher keine Seiten in der KOMA-Script-Anleitung nennen. Schließlich gibt es einen Befehlsindex, so dass man alle Befehle gezielt nachlesen kann und es gibt ein Inhaltsverzeichnis, so dass man sich auch gezielt zu bestimmten Themen informieren kann.

von Crys » Do 18. Sep 2014, 10:06

Danke Elke. Es stimmt schon, das fancyhdr Ergebnis ist nicht ganz eindeutig und auch nicht ideal. 1 zu 1 muss es nicht übernommen werden, aber die Ausgabe hat schon meist Sinn gemacht.
\documentclass{scrartcl}
\usepackage{mwe}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{lastpage}
\usepackage{datetime}
\settimeformat{hhmmsstime}
\renewcommand{\timeseparator}{-}
\newcommand{\lz}[1]{\ifnum #1<10 0\the#1\else\the#1\fi}

\usepackage[headsepline,footsepline]{scrlayer-scrpage}
\renewcommand*{\sectionmark}[1]{\markboth{{\sectionmarkformat#1}}{}}
\renewcommand*{\addsecmark}[1]{\markboth{{#1}}{}}
\renewcommand*{\subsectionmark}[1]{\markright{\subsectionmarkformat#1}}

\ohead{\rightmark}
\ihead{\leftmark}
\chead{}

\ofoot{\thepage /\pageref{LastPage}}
\ifoot{\jobname\ \the\year-\lz{\month}-\lz{\day}\_\currenttime}
\cfoot{}
\setkomafont{pageheadfoot}{\normalfont}

\title{Test}
\author{Tester}

\begin{document}
\maketitle
\tableofcontents
\blinddocument\blinddocument
\blinddocument\blinddocument
\blinddocument\blinddocument

\clearpage
\subsection{Ein Unterabschnitt}
\subsection{Ein zweiter Unterabschnitt}
\clearpage
\section{Ein Abschnitt}
\section{Ein zweiter Abschnitt}
\addsec{Ein Abschnitt ohne Nummer}

\end{document}
Problem ist jetzt, dass ein Kapitel auf der Seite beginnt, aber noch abschnitte von einem anderen Kapitel auf der Seite ist. Dann ist es uninteressant, wenn in der Kopfzeile die aktuelle Kapitelbezeichnung steht (wie im Beispiel auf Seite 5), sondern es sollte der letzte Titel da stehen.

Das selbe gilt auch für Unterkapitel (bzw. Abschnitte, eben eine Ebene darunter).

Außerdem wird auf der Titelseite die std. Fußzeile angezeigt. Dort sollte aber aber auch das selbe wie überall gelten.


Mein Zweck dahinter ist es, das ich von einer langen Arbeit nur eine Seite bzw. einen Auszug von Seiten ausdrucke. Damit ich dann auf einen Blick erkennen kann von wann das ist, welche Datei da dahinter steckt und in welchen (Unter-) Kapitel ich gerade bin (weil die Seitenzahlen sich ja ändern), sollen die Angaben hin.

Nach oben