2018-04-26 8:48 GMT+02:00 Urs Liska <li...@openlilylib.org>: > 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 <li...@openlilylib.org>: >> ... >>> >>> 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 as >> >> Being 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.
I think I've seen usecases for this. So better be prepared to deal with it. > >> ... >> >>> 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? Would be very nice. You noticed my other mail about relying on "ancester-layout"? Should be implemented as well. Though, I don't have the knowledge to judge the Tex-coding. Cheers, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user