設定和顯示從標題中的檔案名稱中提取的日期範圍

設定和顯示從標題中的檔案名稱中提取的日期範圍

幾個月前我已經問過有關該主題的相關問題。但是,我有一個具有以下結構的項目:

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.tex20230102.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}

預先感謝大家。

相關內容