这是我使用的代码(连同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}