@end ignore
+@item
+Page numbers may now be printed in roman numerals, by setting the
+@code{page-number-type} paper variable.
+
@item
It is now possible to use @code{\time} and @code{\partial}
together to change the time signature in mid measure.
If set to false, page numbers are not printed.
+@cindex page numbers in roman numerals
+@item page-number-type
+@funindex page-number-type
+
+The type of numerals used for page numbers. Choices include
+@code{roman-lower}, @code{roman-upper} and @code{arabic}.
+Default: @code{'arabic}.
+
@end table
@seealso
#(set-default-paper-size "a6")
-#(define-markup-command (roman-page-number layout props) ()
- (let ((page-number (chain-assoc-get 'page:page-number props)))
- (interpret-markup layout props (format #f "~@r" page-number))))
-
\book {
\tocItem \markup "First part"
\header { title = "Book with several parts" }
left-margin = 20\mm
right-margin = 20\mm
line-width = 65\mm
- evenHeaderMarkup = \markup \fill-line { \roman-page-number "SECOND PART" \null }
- oddHeaderMarkup = \markup \fill-line { \null "SECOND PART" \roman-page-number }
+ page-number-type = #'roman-upper
+ evenHeaderMarkup = \markup \fill-line {
+ \fromproperty #'page:page-number-string
+ "SECOND PART"
+ \null
+ }
+ oddHeaderMarkup = \markup \fill-line {
+ \null
+ "SECOND PART"
+ \fromproperty #'page:page-number-string
+ }
}
\tocItem \markup "Second part"
\markup \justify { Second part, with different margins and page header. }
first-page-number = #1
print-first-page-number = ##f
print-page-number = ##t
+ page-number-type = #'arabic
%%
%% Headers, footers, and titles
"Perform simple wordwrap, return stencil of each line."
(define space (if justify
;; justify only stretches lines.
- (* 0.7 base-space)
- base-space))
+ (* 0.7 base-space)
+ base-space))
(define (stencil-len s)
(interval-end (ly:stencil-extent s X)))
(define (maybe-shift line)
Reference to a page number. @var{label} is the label set on the referenced
page (using the @code{\\label} command), @var{gauge} a markup used to estimate
the maximum width of the page number, and @var{default} the value to display
-when @var{label} is not found."
+when @var{label} is not found.
+
+(If the current book or bookpart is set to use roman numerals for page numbers,
+the reference will be formatted accordingly -- in which case the @var{gauge}'s
+width may require additional tweaking.)"
(let* ((gauge-stencil (interpret-markup layout props gauge))
(x-ext (ly:stencil-extent gauge-stencil X))
(y-ext (ly:stencil-extent gauge-stencil Y)))
(page-number (if (list? table)
(assoc-get label table)
#f))
- (page-markup (if page-number (format #f "~a" page-number) default))
+ (number-type (ly:output-def-lookup layout 'page-number-type))
+ (page-markup (if page-number
+ (number-format number-type page-number)
+ default))
(page-stencil (interpret-markup layout props page-markup))
(gap (- (interval-length x-ext)
(interval-length (ly:stencil-extent page-stencil X)))))
(cdr entry)))
alist))
alists))
+ (number-type (get 'page-number-type))
(pgnum-alist
(list
(cons 'header:tagline
(cons 'page:is-last-bookpart is-last-bookpart)
(cons 'page:is-bookpart-last-page is-bookpart-last-page)
(cons 'page:page-number-string
- (number->string page-number))
+ (number-format number-type page-number))
(cons 'page:page-number page-number)))
(props (append
(list pgnum-alist)