设置并显示从标题中的文件名中提取的日期范围

设置并显示从标题中的文件名中提取的日期范围

几个月前我已经问过一个关于这个主题的相关问题。但是,我有一个具有以下结构的项目:

Project:
 |- main.tex
 |
 |- pages
     |- 20230101.tex
     |- 20230102.tex
     |- ...

pages我使用main.tex此循环包含了下面的所有文件for(静态解决方案,但文件名具有固定长度等):

\foreach \year in {2023, 2024} {
    \foreach \month in {01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12} {
        \foreach \day in {01, 02, 03, 04, 05, 06, 07, 08, 09, 10, ..., 31} {
            \edef\fileName{pages/\year\month\day}
            \IfFileExists{\fileName}{
               \getfiledate{\day}{\month}{\year}
               \include{\fileName}
            }
        }
    }  
}

\getfiledate{\day}{\month}{\year}是用于存储并显示页面右上角日期的命令:

\newcommand{\getfiledate}[3]{\renewcommand{\getfiledate}{\dayofweekname{#1}{#2}{#3}\ #1/#2/#3}}

正如文件名所暗示的那样,新文件的创建并不意味着上一节/章节的结束,因此使用include会导致不必要的分页符。我尝试用 替换它,input但如果两个短文件最终出现在同一页上,编译器会抛出错误。我现在的目标是当两个或多个文件嵌入在同一页时显示一系列日期(从第一个文件到最后一个文件)。例如,如果有三个文件,即20230103.tex和,都包含一行,20230102.tex20230103.tex生成的页面应该有这个标题:

Sunday 01/01/2023 - Tuesday 03/02/2023

并且三行一行接一行。如果每页文件数比例为 1:1(即文件长度超过一页),则页眉应保持现在的样子(只有一个日期)。

你认为这是可能的吗?如果你想尝试一下,我在这里给你留一个 MWE:

\documentclass{article}
\usepackage{pgffor, fancyhdr, datetime}

\pagestyle{fancy}
\fancyhead[R]{\getfiledate}

\newcommand{\getfiledate}[3]{\renewcommand{\getfiledate}{\dayofweekname{#1}{#2}{#3}\ #1/#2/#3}}

\begin{document}

\foreach \year in {2023, 2024} {
    \foreach \month in {01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12} {
        \foreach \day in {01, 02, 03, 04, 05, 06, 07, 08, 09, 10, ..., 31} {
            \edef\fileName{pages/\year\month\day}
            \IfFileExists{\fileName}{
               \getfiledate{\day}{\month}{\year}
               \include{\fileName}
            }
        }
    }  
}

\end{document}

提前感谢大家。

相关内容