这里有一个小例子来说明我的问题:
\documentclass[fontsize=12pt, paper=a4]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{scrpage2}
\clearscrheadfoot
\pagestyle{scrheadings}
\ihead{\leftmark}
\ohead{\rightmark}
\cfoot{\pagemark}
\automark[subsection]{chapter}
\begin{document}
\chapter{Test}
\Blindtext
\section{Sec}
\Blindtext
\subsection{SubSec}
\Blindtext
\chapter{Test2}
\Blindtext
\section{Sec2}
\Blindtext
\subsection{SubSec2}
\Blindtext
\end{document}
如您所见,我希望在每页的标题中显示章节和小节。但在第 2 页和第 6 页,没有小节,章节在标题中出现了两次。在第 3、4、7 和 8 页上一切正常。
\rightmark
当没有可用的子部分时,我想隐藏该子部分的 。我该怎么做?
答案1
您可以使右侧标题文本与左侧标题文本不一样:
\ohead{%
\expandafter\def\expandafter\tmpa\expandafter{\romannumeral`\Q\leftmark}%
\expandafter\def\expandafter\tmpb\expandafter{\romannumeral`\Q\rightmark}%
\ifx\tmpa\tmpb\else\rightmark\fi
}
答案2
我认为将节放在页眉中比没有子节而什么都没有更有意义。以下示例使用页面上的第一个节或子节元素作为页眉。它使用来自 e-TeX 的附加标记寄存器。
\documentclass[fontsize=12pt, paper=a4]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{scrpage2}
\usepackage{etex}
\clearscrheadfoot
\pagestyle{scrheadings}
\ihead{\leftmark}
% \ohead{\rightmark}
\iftrue % oneside
\ohead{\firstmarks\subsectionmarks}
\else % twoside
\lohead{\firstmarks\subsectionmarks}
\rohead{\botmarks\subsectionmarks}
\fi
\cfoot{\pagemark}
\automark[subsection]{chapter}
\makeatletter
\newmarks\subsectionmarks
\newcommand*{\marksubsec}[1]{%
\begingroup
\protected@edef\@temp{%
\marks\subsectionmarks{#1}%
}%
\@temp
\endgroup
}
\@ifdefinable\org@chaptermark{%
\let\org@chaptermark\chaptermark
\renewcommand*{\chaptermark}{%
\marks\subsectionmarks{}
\org@chaptermark
}%
}
% Redefining \sectionmark
\@ifdefinable{\org@sectionmark}{%
\let\org@sectionmark\sectionmark
\iftrue
\renewcommand*{\sectionmark}[1]{%
\marksubsec{%
\ifnum\value{secnumdepth}>0 %
\if@mainmatter
\sectionmarkformat
\fi
\fi
#1%
}%
\org@sectionmark{#1}%
}
\else
\renewcommand*{\sectionmark}[1]{%
\marksubsec{}%
\org@sectionmark{#1}%
}%
\fi
}
\@ifdefinable\org@subsectionmark{%
\let\org@subsectionmark\subsectionmark
\renewcommand*{\subsectionmark}[1]{%
\marksubsec{%
\ifnum\value{secnumdepth}>1 %
\if@mainmatter
\subsectionmarkformat
\fi
\fi
#1%
}%
\org@subsectionmark{#1}%
}%
}
\makeatother
\begin{document}
\chapter{Test}
\Blindtext
\section{Sec}
\Blindtext
\subsection{SubSec}
\Blindtext
\chapter{Test2}
\Blindtext
\section{Sec2}
\Blindtext
\subsection{SubSec2}
\Blindtext
\end{document}
可以通过将注释后的改为
\iftrue
来省略节标题。\iffalse
% Redefining \subsectionmark
示例假设
oneside
设置。对于twoside
小节(/section)标题可以参考页面上的第一个和最后一个小节(/section),然后更改\iftrue
为\iffalse
定义外部标题。