如何在该部分的第一页显示该部分的名称

如何在该部分的第一页显示该部分的名称

我想只在本部分第一页顶部左侧显示书中部分的名称。例如,在下面的屏幕截图中,我只需要在本页左上角显示部分的名称(而后面的页面显示子部分的名称)。我使用此代码在左上角显示子部分的名称,效果很好:

\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

fancyhdrfor \sectionmarkwith的默认值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上述示例中的 。我建议使用第一个,因为这也适用于目录等。

相关内容