合并 LuaLaTeX 文档中的手动目录条目

合并 LuaLaTeX 文档中的手动目录条目

我正在使用 LuaLaTeX 和 Lua 包开发文档生成基础架构。该过程的一部分是包含外部生成的包含多个部分的多页 PDF。我的问题是如何将包含的 PDF 的目录条目与通过主文档的分节命令创建的常规条目合并。

所包含的文档是使用 LilyPond 创建的多乐章乐谱。LilyPond 已将.toc包含页码和乐章标题的文件导出为字符串列表(页码已经正确,因为 LilyPond 已从主文档中获取起始页码)。

我可以解决这个问题的一个方法是

  • 读取(LilyPond).toc 文件(使用 Lua)
  • 解析页码
  • \includepdf使用确定页面范围的多个命令插入文档
  • 手动写入\section条目

但实际上我更希望能够将 PDF 包含在一个整体中并手动“注入”目录条目。

假设我有一张 Lua 表

toc_entries = {
    ["7"] = "First movement",
    ["13"] = "Second movement",
    ["25"] = "Third movement"
}

是否有可能从那里将相应的条目(假设所有条目都在相同的、预定义的分段级别)注入到已经由常规分段条目填充的目录中?

类似于\includepdfs addtotoc,但可以选择指定多个条目。(让 LilyPond 以 所需的格式导出目录条目会很容易addtotoc。)

答案1

\includepdfsaddtotoc已经支持多个条目:

\documentclass{article}
\usepackage{pdfpages,catchfile}
\newcommand\includelilypond[1]{%
  \begingroup
    \CatchFileDef\currentlilypondtoc{#1.toc}{}
    \edef\x{\noexpand\includepdf[pages=-,addtotoc={\currentlilypondtoc}]{#1.pdf}}
  \expandafter\endgroup\x
}
\begin{document}
\tableofcontents
\includelilypond{test}
\end{document}

相关内容