Seite 2 von 2

Redefinition \sectionmark

Verfasst: Do 8. Okt 2009, 14:47
von Stefan Kottwitz
Bei obigem Codebeispiel ginge etwa
\renewcommand*\sectionmark[1]{\markboth{\MakeUppercase{#1}}{}}
Das muss nach \pagestyle{fancy}[/i] stehen.

Stefan

Re: Redefinition \sectionmark

Verfasst: Do 8. Okt 2009, 18:37
von Schweinebacke
Stefan hat geschrieben:Bei obigem Codebeispiel ginge etwa
\renewcommand*\sectionmark[1]{\markboth{\MakeUppercase{#1}}{}}
Das muss nach \pagestyle{fancy}[/i] stehen.
Wie gesagt: Es ist keine gute Idee das so zu machen. Wenn man \thesection direkt in den Kopf packt, statt das über den Mark-Mechanismus zu machen, dann kann die falsche Angabe im Kopf landen. Das ist gar nicht schwer zu erreichen:
\documentclass[12pt]{paper}
\usepackage{fancyhdr} 
\pagestyle{fancy} 
\usepackage{colortbl}
\usepackage{color}
\definecolor{darkblue}{rgb}{0,0,0.5} 
\rhead{\color{black}Seite \thepage} 
\lhead{\begin{tabular}{>{\columncolor{darkblue}\color{white}}c|||% 
      >{\columncolor{white}}c}
    \large\bfseries~~\thesection&~
  \end{tabular}\color{darkblue}\bfseries\leftmark} 
\renewcommand*\sectionmark[1]{\markboth{\MakeUppercase{#1}}{}}

\usepackage{lipsum}

\begin{document}
\section{First Section}
\lipsum[2-4]\lipsum[4]
\section{Second Section}
\lipsum
\end{document}
Wenn man hingegen meiner Empfehlung folgt, dann passiert das nicht:
\documentclass[12pt]{paper}
\usepackage{fancyhdr} 
\pagestyle{fancy} 
\usepackage{colortbl}
\usepackage{color}
\definecolor{darkblue}{rgb}{0,0,0.5} 
\rhead{\color{black}Seite \thepage}
\DeclareRobustCommand*{\sectionmarkbox}[1]{%
  \begin{tabular}{>{\columncolor{darkblue}\color{white}}c|||% 
      >{\columncolor{white}}c}
    \large\bfseries~~#1&~
  \end{tabular}
}
\newcommand{\sectionmarkformat}{%
  \sectionmarkbox{\thesection}%
}
\lhead{\color{darkblue}\bfseries\leftmark} 
\renewcommand*\sectionmark[1]{\markboth{\sectionmarkformat\MakeUppercase{#1}}{}}

\usepackage{lipsum}

\begin{document}
\section{First Section}
\lipsum[2-4]\lipsum[4]
\section{Second Section}
\lipsum
\end{document}
Ich habe das selbst auch schon falsch gemacht und daraus gelernt. Vor allem der Trick mit dem zusätzlichen, robust deklarierten \sectionmarkbox ist dabei wichtig, damit man keine Fehlermeldungen im Kopf bekommt (was gerne der Fall ist, wenn man Farbe in \markboth oder \markright hat). Dieser Trick stammt vom KOMA-Script-Autor.

Verfasst: Fr 9. Okt 2009, 11:22
von astf
Es funktioniert!

Aber ich bekomme auch bei der \DeclareRobustCommand* - Variante auf der ersten Seite schon Second Section in der Kopfzeiel angezeigt.

Verfasst: Fr 9. Okt 2009, 18:51
von Schweinebacke
astf hat geschrieben:Aber ich bekomme auch bei der \DeclareRobustCommand* - Variante auf der ersten Seite schon Second Section in der Kopfzeiel angezeigt.
Ich nicht:
 *File List*
   paper.cls    2008/05/30 1.0l LaTeX document class (wm).
  size12.clo    2005/09/16 v1.4f Standard LaTeX file (size option)
fancyhdr.sty    
colortbl.sty    2001/02/13 v0.1j Color table columns (DPC)
   array.sty    2005/08/23 v2.4b Tabular extension package (FMi)
   color.sty    2005/11/14 v1.0j Standard LaTeX Color (DPC)
   color.cfg    2007/01/18 v1.5 color configuration of teTeX/TeXLive
  pdftex.def    2008/09/08 v0.04l Graphics/color for pdfTeX
  lipsum.sty    2005/01/26 v1.0 150 paragraphs of Lorem Ipsum dummy text
supp-pdf.tex
 ***********