循环目录结构并包含所有 *.pdf 文件

循环目录结构并包含所有 *.pdf 文件

我有一个由存储在以下组织的目录中的多个 *.tex 文件构成的文档:

-2022
   -07
      -01
         -note.tex
         -file1.pdf
         -differentfilename.pdf
      -02
         -note.tex
      -05
         -note.tex
         -somefile.pdf
         -anotherfile.pdf
etc.

我的“主” LaTeX 文档循环遍历所有日期文件夹并将 note.tex 包含在文档中。如果某一天有各种 pdf 文件,我想将它们作为链接包含在系统阅读器中打开。有没有办法让 LaTeX 循环遍历文件结构并根据需要包含 pdf?我的 MWE 尝试如下:

% !TEX options=--shell-escape
\documentclass{article}
\usepackage[letterpaper,margin=1.25in,top=1in,bottom=1in]{geometry}
\usepackage{pgfcalendar}
\let\d=\pgfcalendarshorthand
\newcommand\formatdate[2]{\pgfcalendar{cal}{#1}{#1}{#2}}

\newcommand\firstdate{2022-07-01}
\newcommand\lastdate{\year-\month-\day}

\begin{document}

\pgfcalendar{cal}{\firstdate}{\lastdate}{%
    \def\formatteddate{\d{y}0/\d{m}0/\d{d}0}%
    \graphicspath{ {./\formatteddate/}}     
    \IfFileExists{./\formatteddate/note.tex}{
        \marginpar{\vspace*{1em}\textsf{ \d m. \d d- \d y- }}%
        \vspace*{1.5em}
        \addcontentsline{toc}{section}{\d mt \d d0, \d y0}%
        \input{./\formatteddate/note.tex}
        \begin{flushright}
            HERE IS WHERE I'D LIKE SOME COMMAND THAT CAN FIND ANY PDFS IN THE DAY'S FOLDER AND INCLUDE A LINK TO THEM IF POSSIBLE.
        \end{flushright}

    }{}
}


\end{document}

我想如果文件名遵循某种惯例,那么做到这一点相当容易,但就我而言,它们没有,所以我想通过 .pdf 扩展名来识别它们并包含指向任何此类文件的链接。谢谢!

答案1

为了使我的 shell 脚本建议精确:在父目录中工作2022

  1. 创建一个包含所有前言材料(最多)的.tex文件(例如)。preamble.tex\begin{document}
  2. 创建以下内容buildscript.sh(未经测试;可能有拼写错误)
#!/bin/bash
cat preamble.tex > main.tex
for filedate in */*/*
do
###  Insert lines here such us your margin par and ToC commands
    echo "\input{./${filedate}/notes.tex}" >> main.tex
    if compgen -G $filedate/*.pdf >/dev/null; then
        for pdffile in $filedate/*pdf
        do
            ### Change this line to format it or whatever
            echo "\href{run:./${pdffile}}" >> main.tex
        done
    fi
done
echo "\end{document}" >> main.tex
latexmk main.tex

如果您运行buildscript.sh它,则应该首先为每个日期输入相应的日期notes.tex,然后创建一个指向该目录中每个 pdf 文件的超链接(确保hyperref在您的序言中加载)。创建 TeX 文件后,它将为您构建它。


快速解释:

  • 上述脚本假设目录结构为年/月/日,如您所指示。
  • 它假设每天都会有一个notes.tex;如果你愿意,你可以添加一个存在检查。
  • 它不假设有任何 PDF 文件。该compgen -G命令是一个bash特定的内置命令(因此#!/bin/bash),如果 glob 模式具有非零匹配,则返回 true。因此,如果目录中没有 PDF 文件,则不会创建超链接。

相关内容