使用 fancyhdr 为每个部分指定新日期

使用 fancyhdr 为每个部分指定新日期

我正在使用报告格式,并希望在每个部分的右侧标题上显示一个新日期(我可以手动输入这些日期)。我的知识非常基础,到目前为止,我已经设法在序言中设置了这一点,但我只知道如何在整个文档中生成一个日期(如下所示),而不是在每个部分中更新。

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[R]{\today}

作为概述,我的文档将按如下结构记录八次会议的笔记,每章分为两章,每章四次会议。

- 第 1 章
- 第 1.1 节(日期 1) -
第 1.2 节(日期 2)
- 第 1.3 节(日期 3) -
第 1.4 节(日期 4)

- 第 2 章
- 第 2.1 节(日期 5) -
第 2.2 节(日期 6)
- 第 2.3 节(日期 7) -
第 2.4 节(日期 8)

如果有人可以为我提供一些代码,让我可以在每个部分的开头输入日期,我将不胜感激。

答案1

我刚刚定义了一个新命令\datesection,它最多需要 3 个参数:

\datesection[<short title>]{<section title>}[<date/right header content>]

  • 前两个(可选和强制)是标准\section参数
  • 最后一个可选参数设置正确的标题

它还有一个带星号的版本,其工作方式如下\section*命令:

\documentclass[]{report}
\usepackage[T1]{fontenc}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}

\usepackage{blindtext}

\NewDocumentCommand{\datesection}{s O{#3} m O{\empty}}{
    \IfBooleanTF{#1}{
    \section*{#3}
    \fancyhead[R]{#4}
    }{
    \section[#2]{#3}
    \fancyhead[R]{#4}
    }
}

\begin{document}

\datesection{title}[\today]
\blindtext

\clearpage

\datesection[short title]{longer title}[tomorrow]
\blindtext

\clearpage

\datesection*{title 2}[yesterday]
\blindtext

\end{document}

希望这对你有用!

答案2

您可以使用定义一个变量\def\<variablename>,然后使用每个新部分更新该变量。

以下是 MWE:

\documentclass{article}

\begin{document}

\def\kdate{4}

\section{Section 1.1  - \kdate}

\def\kdate{5}

\section{Section 1.2  - \kdate}

\def\kdate{6}

\section{Section 1.3  - \kdate}


\end{document}

我使用了kdate变量名。您可以使用任何您想要的名称,只要确保它不会与预先存在的变量或命令冲突即可。

在此处输入图片描述

编辑:

如果您使用该fancyhdr包来构建标题,则可以将该变量添加到您的\fancyhead命令中:

\pagestyle{fancy}
 \fancyhf{}
 \fancyhead[LE,RO]{\thepage}
 \fancyhead[RE,LO]{\kdate}

相关内容