我想只在本部分第一页顶部左侧显示书中部分的名称。例如,在下面的屏幕截图中,我只需要在本页左上角显示部分的名称(而后面的页面显示子部分的名称)。我使用此代码在左上角显示子部分的名称,效果很好:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[margin=1in]{geometry}
\geometry{footskip=10pt, headheight=100pt, headsep=20pt, bottom =7mm}
\usepackage{fancyhdr}
\usepackage{lipsum}% just to generate text for the example
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{\rightmark}
\fancyhead[R]{\thepage}
\renewcommand{\headrulewidth}{1.5pt}
有人能帮我在章节的第一页上显示该章节的名称,并在其前面加上该章节的符号吗?
答案1
fancyhdr
for \sectionmark
with的默认值article
及其默认值为oneside
:
\def\sectionmark#1{%
\markboth{\MakeUppercase{\ifnum \c@secnumdepth>\z@
\thesection\hskip 1em\relax
\fi #1}}
{}
}%
重要的是 的第二个参数为空\markboth
。这意味着,右边的标记被清除了。并且因为\rightmark
使用了第一的页面的右侧标记,在您的情况下\rightmark
返回该空标记。
和:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[margin=1in]{geometry}
\geometry{footskip=10pt, headheight=100pt, headsep=20pt, bottom =7mm}
\usepackage{fancyhdr}
\usepackage{mwe}% just to generate text for the example
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{\rightmark}
\fancyhead[R]{\thepage}
\renewcommand{\headrulewidth}{1.5pt}
\renewcommand*{\sectionmark}[1]{%
\markboth
{\MakeUppercase{\ifnum \value{secnumdepth}>0
\thesection\hskip 1em\relax
\fi #1}}
{\MakeUppercase{\ifnum \value{secnumdepth}>0
\thesection\hskip 1em\relax
\fi #1}}
}%
% as long as option twoside is not used, alternatively you can use:
% \renewcommand*{\sectionmark}[1]{%
% \markright
% {\MakeUppercase{\ifnum \value{secnumdepth}>0
% \thesection\hskip 1em\relax
% \fi #1}}
% }%
\begin{document}
\blinddocument
\blinddocument
\end{document}
所有部分都会有一个非空的右侧标记。因此,只要该部分是页面的第一个标题,它就会显示该部分,例如:
如果您想要页面的最后一个左侧标记,则仅当右侧标记为空时,您可以使用:
\documentclass[12pt,a4paper]{article}
\usepackage[margin=1in]{geometry}
\geometry{footskip=10pt, headheight=100pt, headsep=20pt, bottom =7mm}
\usepackage{scrextend}% provides \Ifstr etc.
\usepackage{fancyhdr}
\usepackage{mwe}% just to generate text for the example
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{\Ifstr{\rightmark}{}{\leftmark}{\rightmark}}
\fancyhead[R]{\thepage}
\renewcommand{\headrulewidth}{1.5pt}
\renewcommand*{\sectionmark}[1]{%
\markboth
{\MakeUppercase{\ifnum \value{secnumdepth}>0
\thesection\hskip 1em\relax
\fi #1}}
{}
}%
\begin{document}
\blinddocument
\end{document}
如果您不想使用大写章节标记,请使用\fancyhead[L]{\nouppercase …}
或删除\MakeUppercase
上述示例中的 。我建议使用第一个,因为这也适用于目录等。