目录未动态更新

目录未动态更新

这是我使用的代码(连同datenumber包)来创建包含增加日期的子部分标题。

\DeclareRobustCommand\mysubsectiontitle{Week of \StrLeft{\datemonthname}{3}. \thedateday, \thedateyear}
\newcommand{\mysubsection}[1]{\subsection{\mysubsectiontitle #1}}

章节标题确实增加了,但目录显示的日期相同。

小节:

在此处输入图片描述

在此处输入图片描述

目录:

在此处输入图片描述

我还收到很多类似“PDF 字符串(Unicode)中不允许使用令牌”的警告。

我怎样才能解决这个问题?

编辑:

\documentclass[12pt]{article}

\usepackage{xstring}
\usepackage{datenumber}
\setdatenumber{2024}{02}{26}

\newcommand{\mysectiontitle}{\datemonthname~\thedateyear}
\newcommand{\mysection}[1]{\section{\mysectiontitle #1}}

\DeclareRobustCommand\mysubsectiontitle{Week of \StrLeft{\datemonthname}{3}. \thedateday, \thedateyear}
\newcommand{\mysubsection}[1]{\subsection{\mysubsectiontitle #1}}

\begin{document}


\tableofcontents

\mysection{}

\mysubsection{}
\nextdate
\mysubsection{}
\nextdate
\mysubsection{}
\nextdate
\mysubsection{}
\nextdate
\mysubsection{}

\mysection{}

\end{document}

以上涵盖了相关代码。输出:

在此处输入图片描述

编辑2:\StrLeft{\datemonthname}{3}我可以通过用包围来消除上面提到的警告\texorpdfstring{}{},但这并不能解决目录无法正确更新的问题。

答案1

不确定为什么\StrLeft这里这么糟糕。但我选择了不同的路线。通过手动制作月份列表,我们可以确保五月之后没有缩写点。

\documentclass[12pt]{article}
\usepackage{xstring}
\usepackage{datenumber}
\setdatenumber{2024}{02}{26}
\newcommand\AbrevMonth{%
  \ifcase\value{datemonth}%
  \or Jan.%
  \or Feb.%
  \or Mar.%
  \or Apr.%
  \or May%
  \or Jun.%
  \or Jul.%
  \or Aug.%
  \or Sep.%
  \or Oct.%
  \or Nov.%
  \or Dec.%
  \fi%
}
\newcommand{\mysectiontitle}{\datemonthname~\thedateyear}
\newcommand{\mysection}[1]{\section{\mysectiontitle #1}}

\newcommand\mysubsectiontitle{Week of \AbrevMonth\ \thedateday, \thedateyear}
\newcommand{\mysubsection}[1]{\subsection{\mysubsectiontitle}}

\begin{document}


\tableofcontents

\mysection{}

\mysubsection{}
\nextdate
\mysubsection{}
\nextdate
\mysubsection{}
\nextdate
\mysubsection{}
\nextdate
\mysubsection{}

\mysection{}

\end{document}

相关内容