PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler bei Header



kbee
25-09-2012, 22:45
Liebe Forumgemeinde,

ich habe mir im Internet einige Anregungen für meine Arbeit bzgl. Formatierung, ... geholt. Dabei bin ich allerdings auf ein Problem gestossen, dass ich alleine nicht lösen kann, darum bitte ich Berufenere als mich um Hilfe.

Ich habe auf einer Internetseite folgende Formatierung für Header (Dokument ist zweiseitig) gefunden:

\makeatletter % = mache @ letter

%Vordefinition mehrfachverwendeter Teile
\def\oddfootSTANDARD{
\renewcommand{\@oddfoot}{
\hbox to\textwidth{\vbox{\hbox to\textwidth{
\hfill
\strut
\hspace{1pt}
}}}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{
\strut %unsichtbares Zeichen
\large
\hspace{5pt}
\vrule width 1pt height 1cm
\hspace{8pt}
\textsf{\thepage}
\hfill
}}}\hss
}
}

\def\evenfootSTANDARD{
\renewcommand{\@evenfoot}{
\hspace{-\marginWidth}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{
\large
\strut %unsichtbares Zeichen
\hfill
\textsf{\thepage}
\hspace{5pt}
\vrule width 1pt height 1cm
\hspace{7pt}
}}}\hss
}
}

%Standardstil für die gesamte Arbeit
\newcommand{\ps@thesis}{
\renewcommand{\@oddhead}{
\hbox to\textwidth{\vbox{\hbox to\textwidth{
\textsf
\hfill
\rightmark
\strut
\hspace{1pt}
%hspace(10pt) Herwig
}}}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{
\strut %unsichtbares Zeichen
\hspace{1pt}
%\hspace{-15pt} Herwig
\vrule width 1pt
\hspace{5pt}
\textsf
\thesection
\hfill
}}}\hss
}

\renewcommand{\@evenhead}{
\hspace{-\marginWidth}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{
\hfill
\strut %unsichtbares Zeichen
\textbf{\textsf{Kapitel~\thechapter}}
\hspace{5pt}
\vrule width 1pt
\hspace{7pt}
\strut
}}}\hss

\hbox to\textwidth{\vbox{\hbox to\textwidth{
\strut %unsichtbares Zeichen
\truncate{.9\textwidth}{\leftmark}
\hfill
}}}\hss
}

\oddfootSTANDARD
\evenfootSTANDARD
}

%Der PLAIN-Style der Chapter- und Sonderseiten muss redefiniert werden.
\renewcommand{\ps@plain}{
\let\@oddhead\@empty
\let\@evenhead\@empty
\let\@evenfoot\@empty
\oddfootSTANDARD
}

%Spezieller Stil für Inhaltsverzeichnis und Literaturverzeichnis (ohne Nummern wie 0.0 oder B.0)
\newcommand{\ps@thesisINTRO}{
\renewcommand{\@oddhead}{
\hbox to\textwidth{\vbox{\hbox to\textwidth{
\textsf
\hfill
\sffamily\rightmark
\strut
\hspace{1pt}
}}}\hss
}

\renewcommand{\@evenhead}{
\hbox to\textwidth{\vbox{\hbox to\textwidth{
\strut %unsichtbares Zeichen
\truncate{.9\textwidth}{\sffamily\leftmark}
\hfill
}}}\hss
}

\oddfootSTANDARD
\evenfootSTANDARD
}

%-----------------------
%Spezieller Stil für Anhänge
\newcommand{\ps@thesisANHANG}{
\renewcommand{\@oddhead}{
\hbox to\textwidth{\vbox{\hbox to\textwidth{
\textsf
\hfill
\rightmark
\strut
\hspace{1pt}
}}}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{%
\strut %unsichtbares Zeichen
\hspace{5pt}
\vrule width 1pt
\hspace{5pt}
\textsf
\thechapter
\hfill
}}}\hss
}

\renewcommand{\@evenhead}{
\hspace{-\marginWidth}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{
\hfill
\strut %unsichtbares Zeichen
\textbf{\textsf{Anhang~\thechapter}}
\hspace{5pt}
\vrule width 1pt
\hspace{7pt}
\strut
}}}\hss

\hbox to\textwidth{\vbox{\hbox to\textwidth{
\strut %unsichtbares Zeichen
\truncate{.9\textwidth}{\leftmark}
\hfill
}}}\hss
}

\oddfootSTANDARD
\evenfootSTANDARD
}

\newcommand{\ps@reallyempty}{
\let\@oddhead\@empty
\let\@evenhead\@empty
\let\@oddfoot\@empty
\let\@evenfoot\@empty
}

% Einstellung der Schriftarten für Header links und rechts
\renewcommand{\chaptermark}[1]{\markboth{\uppercase{\textsf{#1}}}{}}%markboth hat zwei argumente für die linke und rechte seite
\renewcommand{\sectionmark}[1]{\markright{\textsf{#1}}}

\makeatother % = mache @ wieder zu nicht-Buchstaben
\pagestyle{thesis}

------------------------------------------------------------
Ich finde diese Formatierung sehr ansprechend, allerdings ist die auf folgende Art und Weise fehlerbehaftet:
Im Fall, dass eine neue Section Y auf einer rechten Seite ganz oben beginnt, wird auf der linken Seite davor zwar der richtige Section-Text X angezeigt, allerdings mit der Nummerierung von Section Y:
Text Section X | Num Sect Y
Ich weiß, dass es irgendetwas mit dem Auseinanderlaufen zwischen Text um Nummerierung zu tun hat, ich komm aber nicht drauf was.

Ich würde mich sehr freuen, wenn sich jemand finden würde mich bei der Lösung zu unterstützen bzw. mir den Fehler nennen könnte.

Mit freundlichen Grüßen
kbee

klops
26-09-2012, 08:37
So kann man das leider nicht ausprobieren. Bitte mach künftig vollstänidge Minimalbeispiele (http://www.mrunix.de/forums/showthread.php?t=66921) und verwende den Code-Button (das Toolbar-Element mit dem #) zum Einfügen von Code hier im Forum. Nach einer groben Durchsicht des Codes kommt es mir vor, als stamme der aus der Mottenkiste von LaTeX zu einer Zeit bevor es Pakete wie scrpage2 und fancyhdr gab. Auf jeden Fall ist er fehlerhaft. Dinge wie \thechapter, \thesection etc. gehören nicht fest in den Seitenstil eingebaut, sondern über den \mark…-Mechanismus realisiert. Das ist aufgrund der asynchronen Ausgabe von LaTeX zwingend, weil es sonst zu dem von Dir beschriebenen Problem kommt. Wenn die beiden Anweisungen \markboth und \markright nicht genügen, dann bietet TeX weitere mark-Register an. Siehe dazu die eTeX-Anleitung (http://mirror.ctan.org/systems/e-tex/v2/doc/etex_man.pdf), die auch auf Deinem Rechner vorhanden sein sollte, sowie ggf. TeX by Topic oder The TeXbook. Sorry, aber mir erst einmal eine Testdatei zu basteln, bei der Dein Code (mit Fehler) funktioniert, um dann erst damit beginnen zu können, den schrittweise auf etwas zu ändern, was wirklich funktioniert, ist mir zu aufwändig.

kbee
26-09-2012, 19:42
Ich streue Asche auf mein Haupt, entschuldigt bitte meine Unkenntnis, ich bin kein Forumsposter, ich hoffe ihr verzeiht mir meinen Anfängerfehler.

Ich habe versucht meinen Code soweit wie möglich zusammen zu streichen, er ist trotzdem noch einigermaßen lang:



\documentclass[fontsize=12pt, paper=a4, headinclude, twoside=true, numbers=noenddot, plainheadsepline, open=right]{scrreprt}

\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel} % Silbentrennung
\usepackage[final]{microtype}
\usepackage{blindtext}
\usepackage{calc}
\usepackage{truncate}

\newlength{\marginWidth}
\setlength\marginWidth{\marginparwidth+\marginpars ep}
\newlength{\fulllinewidth}
\setlength\fulllinewidth{\textwidth+\marginWidth}

\makeatletter % = mache @ letter

%Vordefinition mehrfachverwendeter Teile
\def\oddfootSTANDARD{
\renewcommand{\@oddfoot}{
\hbox to\textwidth{\vbox{\hbox to\textwidth{
\hfill
\strut
\hspace{1pt}
}}}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{
\strut %unsichtbares Zeichen
\large
\hspace{5pt}
\vrule width 1pt height 1cm
\hspace{8pt}
\textsf{\thepage}
\hfill
}}}\hss
}
}

\def\evenfootSTANDARD{
\renewcommand{\@evenfoot}{
\hspace{-\marginWidth}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{
\large
\strut %unsichtbares Zeichen
\hfill
\textsf{\thepage}
\hspace{5pt}
\vrule width 1pt height 1cm
\hspace{7pt}
}}}\hss
}
}

%Standardstil für die gesamte Arbeit
\newcommand{\ps@thesis}{
\renewcommand{\@oddhead}{
\hbox to\textwidth{\vbox{\hbox to\textwidth{
\textsf
\hfill
\rightmark
\strut
\hspace{1pt}
%hspace(10pt) Herwig
}}}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{
\strut %unsichtbares Zeichen
\hspace{1pt}
%\hspace{-15pt} Herwig
\vrule width 1pt
\hspace{5pt}
\textsf
\thesection
\hfill
}}}\hss
}

\renewcommand{\@evenhead}{
\hspace{-\marginWidth}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{
\hfill
\strut %unsichtbares Zeichen
\textbf{\textsf{Kapitel~\thechapter}}
\hspace{5pt}
\vrule width 1pt
\hspace{7pt}
\strut
}}}\hss

\hbox to\textwidth{\vbox{\hbox to\textwidth{
\strut %unsichtbares Zeichen
\truncate{.9\textwidth}{\leftmark}
\hfill
}}}\hss
}

\oddfootSTANDARD
\evenfootSTANDARD
}

%Der PLAIN-Style der Chapter- und Sonderseiten muss redefiniert werden.
\renewcommand{\ps@plain}{
\let\@oddhead\@empty
\let\@evenhead\@empty
\let\@evenfoot\@empty
\oddfootSTANDARD
}

%Spezieller Stil für Inhaltsverzeichnis und Literaturverzeichnis (ohne Nummern wie 0.0 oder B.0)
\newcommand{\ps@thesisINTRO}{
\renewcommand{\@oddhead}{
\hbox to\textwidth{\vbox{\hbox to\textwidth{
\textsf
\hfill
\sffamily\rightmark
\strut
\hspace{1pt}
}}}\hss
}

\renewcommand{\@evenhead}{
\hbox to\textwidth{\vbox{\hbox to\textwidth{
\strut %unsichtbares Zeichen
\truncate{.9\textwidth}{\sffamily\leftmark}
\hfill
}}}\hss
}

\oddfootSTANDARD
\evenfootSTANDARD
}

%-----------------------
%Spezieller Stil für Anhänge
\newcommand{\ps@thesisANHANG}{
\renewcommand{\@oddhead}{
\hbox to\textwidth{\vbox{\hbox to\textwidth{
\textsf
\hfill
\rightmark
\strut
\hspace{1pt}
}}}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{%
\strut %unsichtbares Zeichen
\hspace{5pt}
\vrule width 1pt
\hspace{5pt}
\textsf
\thechapter
\hfill
}}}\hss
}

\renewcommand{\@evenhead}{
\hspace{-\marginWidth}
\hbox to\marginWidth{\vbox{\hbox to\marginWidth{
\hfill
\strut %unsichtbares Zeichen
\textbf{\textsf{Anhang~\thechapter}}
\hspace{5pt}
\vrule width 1pt
\hspace{7pt}
\strut
}}}\hss

\hbox to\textwidth{\vbox{\hbox to\textwidth{
\strut %unsichtbares Zeichen
\truncate{.9\textwidth}{\leftmark}
\hfill
}}}\hss
}

\oddfootSTANDARD
\evenfootSTANDARD
}

\newcommand{\ps@reallyempty}{
\let\@oddhead\@empty
\let\@evenhead\@empty
\let\@oddfoot\@empty
\let\@evenfoot\@empty
}

% Einstellung der Schriftarten für Header links und rechts
\renewcommand{\chaptermark}[1]{\markboth{\uppercase{\textsf{#1}}}{}}%markboth hat zwei argumente für die linke und rechte seite
\renewcommand{\sectionmark}[1]{\markright{\textsf{#1}}}

\makeatother % = mache @ wieder zu nicht-Buchstaben
\pagestyle{thesis}

%Problem mit den Seitenzahlen und Headern auf leeren Seiten nach Kapiteln:
\let\origdoublepage\cleardoublepage
\newcommand{\clearemptydoublepage}{%
\clearpage
{\pagestyle{empty}\origdoublepage}%
}
\let\cleardoublepage\clearemptydoublepage

%Überschriften serifenlos und über den Rand hängend
\usepackage[sf,sl,outermarks,noindentafter,nobottomtitles]{titlesec}

\titleformat{\section}[hang]{\Large\sffamily}{\thetitle}{8pt}{}
\titleformat{\subsection}[hang]{\large\sffamily}{\thetitle}{8pt}{}

\begin{document}

\pagestyle{thesisINTRO}

\tableofcontents
\newpage

\pagestyle{thesis}

\chapter{Einleitung }
\section{Einleitung Abschnitt 1}
\blindtext[4]
\section{Abschnitt 2}
\blindtext[8]
\section{Abschnitt 3}
\blindtext[2]

\end{document}


Das Ergebnis sieht für LaTeX-Verhältnisse eher bescheiden aus, zeigt aber meine Problematik gut auf. Auf Seite 5 sieht man als Header den richtigen Abschnitts(Section-) Text, allerdings mit der falschen Nummerierung (nämlich vom nächsten Abschnitt auf der nächsten Seite). Das mit dem asynchron laufen hab ich mir schon gedacht, ich weiß aber nicht wie ich ihm das austreiben kann. Ich würde ungern auf die Formatierung verzichten, da sie mir persönlich sehr gut gefällt.
Vielleicht darf ich Euch nochmal um mein Anliegen bemühen.

Danke und lg
kbee

u_fischer
28-09-2012, 13:01
Du kannst \thesection nicht direkt in der Kopfzeilendefinition verwenden. \thechapter ist auch gefährlich, geht aber, weil Kapitel meistens ein \newpage ausführen.

Du brauchst ein weiteres \mark-Register über das du die Nummer transportiert. Und musst dann dafür sorgen, dass \chaptermark und \sectionmark es mit dem richtigen Inhalt füllen/leeren. Z.B.


\usepackage{emarks}
\renewcommand{\chaptermark}[1]{\markboth{\uppercase{\textsf{#1}}}{}
\marksthe{secnum}{}}%
\renewcommand{\sectionmark}[1]{\markright{\textsf{#1}}%
\marksthe{secnum}{\thesection}}


Dann kannst du in der Kopfzeilendefinition die Marke benutzen:


\textsf{\thefirstmarks{secnum}}.

Wobei ich jetzt nicht die Zeit habe rumzutesten, ob du firstmarks oder botmarks oder topmarks brauchst. (Die Klammern bei \textsf{...} sind wichtig, die fehlen in deinem ursprünglichen Code).

kbee
28-09-2012, 21:51
Hallo Ulrike,

ich bedanke mich ganz herzlich bei Dir, Du hast mir sehr geholfen.
Mit deinen Tipps konnte ich mein Problem endlich lösen.

Danke und lg
kbee