lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Behaviour of \paper and \layout in ly:book-process


From: David Kastrup
Subject: Re: Behaviour of \paper and \layout in ly:book-process
Date: Mon, 18 Jul 2016 19:19:18 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux)

Urs Liska <address@hidden> writes:

> Am 18.07.2016 um 13:46 schrieb David Kastrup:
>
>> The defaultpaper argument of ly:book-process is only consulted when the
>> book argument does not already have a paper block of its own, and every
>> \book block takes the global \paper block when nothing else is given.
>
> Thank you for the hint.
>
>>
>> If you really want to pass the paper block in yourself during
>> ly:book-process (rather than incorporating it in the \book explicitly),
>
> No, I didn't do that intentionally but was misled by the fact that I
> have to supply that default-paper and -layout arguments.

Well, I wrote:

>> If that sounds like I have any clue about how the hierarchy of books
>> and bookparts is supposed to work, that would be misleading.  That's
>> basically just a report on what some code does.  Why one would want
>> it to do that, I have no idea.

and indeed I did not have any clue about this difference until you
popped the question and I looked into the code for the answer.  I don't
think that there is any reasonable other way to discover that.

And I could not really write useful documentation for this since I fail
to understand the underlying design.

The commits are

commit e9b10d6b0e1549a3d3d9ca81c63e1b2d9b431910
Merge: 3dbfeb1 c45e558
Author: Nicolas Sceaux <address@hidden>
Date:   Sun Nov 16 23:32:33 2008 +0100

    Book parts: \bookpart implementation
    
    Book parts aim at splitting a book into several parts, in order to be
    able to use eg. different page breaking functions, or to make the page
    breaking problem less difficult and more likely to finish.
    
    - Book and Paper_book instances respectively are nestable: children
      book or paper_book are added to the bookparts_ slot;
    
    - the paper_ slot of a child Book (or Book_paper) is created empty,
      and has its parent set to the paper object of the parent Book (or
      Paper_book), so that default paper properties are got from the
      higher level paper object, and child objects only store part-wide
      overrides. This way, we ensure that fonts are loaded in the higher
      level paper object, so that the output framework can get all the
      loaded fonts from the top level book;
    
    - a Paper_book::top_paper() method is added to access the higher level
      paper object, to access properties that are book-wide, for instance
      the table used to store labels and page numbers;
    
    - in the parser, \bookpart blocks are introduced, which can be used at
      toplevel, or inside a \book block. It can contain the same things as
      \book blocks (except \bookpart blocks, though that would be
      possible). The associated handlers are added.
    
    - in header and footer markups, the following predicates can be used
      to determine if a page is the first or the last one in a book part:
      part-first-page, part-last-page.

commit dbefd4b8d0249c6a739d09118f3e0a71001c1c52
Author: Nicolas Sceaux <address@hidden>
Date:   Sat Aug 23 18:34:30 2008 +0200

    Book parts: nestable book parts
    
    - Book and Paper_book instances respectively are nestable: children
      book or paper_book are added to the bookparts_ slot;
    
    - the paper_ slot of a child Book (or Book_paper) is created empty,
      and has its parent set to the paper object of the parent Book (or
      Paper_book), so that default paper properties are got from the
      higher level paper object, and child objects only store part-wide
      overrides. This way, we ensure that fonts are loaded in the higher
      level paper object, so that the output framework can get all the
      loaded fonts from the top level book;
    
    - a Paper_book::top_paper() method is added to access the higher level
      paper object, to access properties that are book-wide, for instance
      the table used to store labels and page numbers;
    
    - in the parser, \bookpart blocks are introduced, which can be used at
      toplevel, or inside a \book block. It can contain the same things as
      \book blocks (except \bookpart blocks, though that would be
      possible). The associated handlers are added.


-- 
David Kastrup



reply via email to

[Prev in Thread] Current Thread [Next in Thread]