|
From: | Urs Liska |
Subject: | Re: Make TOC entries available to LaTeX |
Date: | Thu, 26 Apr 2018 08:48:46 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 |
Hi Harm, thanks for looking into this. Am 25.04.2018 um 23:13 schrieb Thomas Morley:
2018-04-25 16:00 GMT+02:00 Urs Liska <address@hidden>: ...2) Assuming the TOC items are created using \tocItem then it should be guaranteed that there is the same label present as key in both label-table and one of the (toc-items) sublists. So (IISC) several further checks could be removed additionally (or am I missing something?): (let* ((label (car toc-item)) (text (caddr toc-item)) (page (assoc-ref label-table label))) should be sufficient? Therefore the whole function could be written asBeing always paranoid, I would do some thorough testings.
OK, I've found the case where my assumption would break. A rare (and pointless) case but an existing one:
%%% #(define (oly:create-toc-file layout pages) (format #t "label-page-table:\n~a\n" (ly:output-def-lookup layout 'label-page-table)) (format #t "toc-items:\n~a\n" (toc-items))) \paper { #(define (page-post-process layout pages) (oly:create-toc-file layout pages)) } \tocItem \markup "A TOC entry" { c' } \tocItem \markup "Another TOC entry" %%%The \tocItem without anything following it will create an entry in the toc-items list but no label. So this second simplification won't work reliably.
...3) I think the inclusion in the TeX TOC can (now?) be done in a simpler way using the catchfile package: \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} (Answer from https://tex.stackexchange.com/questions/428239/merge-in-manual-toc-entries-in-a-lualatex-document) There's only one issue: The TOC will create wrong entries when LilyPond's first page number is not 1. So there should actually be an offset in place. How can I read the value of the first-page-number variable to set up this offset?page-post-process has the layout-variable. (ly:output-def-lookup layout 'first-page-number) should do the trick.
Thanks, this works.What do you think: this example code is much easier to understand than the one currently in the manual. Should I propose an update?
Urs
[Prev in Thread] | Current Thread | [Next in Thread] |