@section Managing Staging and Master branches with Patchy
@ignore
-The script 'test-patches.py' no longer works with code.google.com since
-Google changed their authentication method.
+The script 'test-patches.py' does not currently work with Allura.
@end ignore
@menu
@item
Commit access @emph{is} required to test and push new commits, but a
-valid login to @uref{http://code.google.com/} is @emph{not}. See
+valid login to @uref{https://sourceforge.net} is @emph{not}. See
@ref{Commit access}.
@end itemize
Reitveld is inconvenient in some respects: it requires a google
account, and there's no way to see all patches relating to
lilypond. Should we switch to something like gerritt?
-@uref{http://code.google.com/p/lilypond/issues/detail?id=1184}
+@uref{https://sourceforge.net/p/testlilyissues/issues/1184/}
(prep: 5 hours. discuss: 15 hours)
@item
Discussion on
-@uref{http://code.google.com/p/lilypond/issues/detail?id=1322}
+@uref{https://sourceforge.net/p/testlilyissues/issues/1322/}
about \new vs. \context.
@item
Let users add their own items to the parser? comment 11 on:
-@uref{http://code.google.com/p/lilypond/issues/detail?id=1322}
+@uref{https://sourceforge.net/p/testlilyissues/issues/1322/}
@item
should engravers be pluralized (note_heads_engraver) or not
@item
should we allow numbers in identifier names? Issue:
-@uref{http://code.google.com/p/lilypond/issues/detail?id=1670}
+@uref{https://sourceforge.net/p/testlilyissues/issues/1670/}
@item
should we officially allow accented characters? in general, how
@end example
According to
-@uref{http://code.google.com/p/lilypond/issues/detail?id=1236,LilyPond issue 1236},
+@uref{https://sourceforge.net/p/testlilyissues/issues/1236/,LilyPond issue 1236},
the location of the LilyPond Git tree is taken from @code{$LILYPOND_GIT}
if specified, otherwise it is auto-detected.
@node Bug Squad setup
@subsection Bug Squad setup
-We highly recommend that you configure your email to use effective
-sorting; this can reduce your workload @emph{immensely}. The
-email folders names were chosen specifically to make them work if
-you sort your folders alphabetically.
+We highly recommend that you configure your email client to use some
+kind of sorting and filtering as this will significantly reduce and
+simplify your workload. Suggested email folder names are mentioned
+below to work when sorted alphabetically.
@enumerate
@item
-Read every section of this chapter, @ref{Issues}.
+Read every section of the @ref{Issues} chapter in this guide.
@item
-If you do not have one already, create a gmail account and send
-the email address to the @ref{Meisters, Bug Meister}.
+Subscribe your email account to @code{bug-lilypond}. See
+@uref{https://lists.gnu.org/mailman/listinfo/bug-lilypond}.
@item
-Subscribe your gmail account to @code{bug-lilypond}.
+Send your email address to the @ref{Meisters, Bug Meister}.
@item
-Configure your google code account:
+Create your own Sourceforge login (required for the Allura issue
+tracker):
-@enumerate
+@itemize
@item
-Wait until your gmail account is listed in:
-
-@example
-@uref{http://code.google.com/p/lilypond/people/list}
-@end example
+Go to @uref{https://sourceforge.net/p/testlilyissues/issues/}
@item
-Sign in to google code by clicking in the top-right corner of:
-
-@example
-@uref{http://code.google.com/p/lilypond/issues/list}
-@end example
-
-You cannot log on if you have Google Sharing enabled
-@uref{http://www.googlesharing.net/}.
+Click on 'Join' in the top-right corner.
@item
-Go to your @qq{Profile}, and select @qq{Settings}.
+Fill in your details as required and click the @emph{Register} button to
+complete the registration.
-@item
-Scroll down to @qq{Issue change notification}, and make sure that
-you have @emph{selected} @qq{If I starred the issue}.
+@end itemize
-@end enumerate
+@item
+Send your Sourceforge @emph{username} (not your email address) to
+@email{bug-lilypond@@gnu.org} asking to be given appropriate permissions
+to either create, edit and comment on tracker issues.
@item
Configure your email client:
-@enumerate
+@itemize
@item
-Any email sent with your gmail address in the @code{To:} or
-@code{CC:} fields should go to a @code{bug-answers} folder.
-
-When setting up your filtering rules, be aware that Google Code
-might use different versions of your email address, such as ones
-ending in @code{@@googlemail.com} or @code{@@gmail.com}.
+Any email sent with your address in the @code{To:} or @code{CC:} fields
+should be configured to go into a @code{bug-answers} folder.
@item
-Any other email either from, or CC'd to,
+Any email either @code{From:} or @code{CC:} to,
@example
-lilypond@@googlecode.com
+testlilyissues-auto@@lists.sourceforge.net
@end example
@noindent
-should go into a separate @code{bug-ignore} folder. Alternately,
-you may automatically delete these emails.
-
-You will @strong{not read} these emails as part of your Bug Squad
-duties. If you are curious, go ahead and read them later, but it
-does @strong{not} count as Bug Squad work.
+should be configured to go into a @code{bug-ignore} folder or,
+alternately, configure your email client to delete these automatically.
+You do @emph{not} need to read mails in the @code{bug-ignore} folder.
+If you are curious (and have time) then read them, but they are not
+necessary for Bug Squad work.
@item
-Any other email sent to (or CC'd to):
+Any email sent @code{To:} or @code{CC:} to,
@example
bug-lilypond
@end example
@noindent
-should go into a separate @code{bug-current} folder.
+should be configured to go into a @code{bug-current} folder.
-@end enumerate
+@end itemize
@end enumerate
Tuesday: Simon Albrecht
Wednesday: Simon Albrecht
Thursday: Colin Campbell
-Friday:
+Friday: Ralph Palmer
Saturday: Colin Campbell
Sunday:
@end example
@item
Issues to verify: go to
-@example
-@uref{http://code.google.com/p/lilypond/issues/list?can=7}
-@end example
+@smallexample
+@uref{https://sourceforge.net/p/testlilyissues/issues/search/?q=status%3AFixed}
+@end smallexample
-(You can also generate this list by selecting
-@qq{Issues to verify} from the drop-down list next to the search
-box.)
+(You can also generate this list by selecting the @qq{Open (Fixed)}
+button down the left-hand frame)
-You should see a list of Issues that have been claimed fixed by a
+You should see a list of Issues that have been marked as 'Fixed' by a
developer. If the developer has done their job properly, the
-Issue should have a tag @qq{Fixed_mm_MM_ss}, where mm is
-the major version, MM the minor version and ss the current
-release. This will help you work out which you can verify - do
-not verify any Issues where the claimed fixed build is not yet
-released. Work your way through these as follows:
+Issue should have the @qq{Labels} field filled in with @qq{Fixed_x_y_z},
+where X is the major version, y the minor version and z the current
+release.
+
+@example
+Fixed_2_19_39
+@end example
+
+This will help you work out which you can verify - do not verify any
+Issues where the claimed fixed build is not yet released. Work your
+way through these as follows:
If the Issue refers to a bug, try to reproduce the bug with the latest
officially released version (not one you've built yourself from
@subsubheading Project overview
-Grid view provides the best overview:
+Project activity
@smallexample
-@uref{http://code.google.com/p/lilypond/issues/list?mode=grid&y=Priority&x=Type&cells=ids}
+@uref{https://sourceforge.net/projects/testlilyissues/}
@end smallexample
@subsubheading Hindering development
These issues stop or slow development work:
@smallexample
-@uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:Maintainability}
+@uref{https://sourceforge.net/p/testlilyissues/issues/search/?q=status:Accepted%20AND%20_type:Maintainability}
@end smallexample
@subsubheading Easy tasks
Issues tagged with @code{Frog} indicates a task suitable for a
-relatively new contributor. The time given is a quick
-(inaccurate) estimate of the time required for somebody who is
-familiar with material in this manual, but does not know anything
-else about LilyPond development.
+relatively new contributor. The time given is a quick (and probably
+inaccurate) estimate of the time required for somebody who is familiar
+with material in this manual, but does not know anything else about
+LilyPond development.
@smallexample
-@uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:Frog}
+@uref{https://sourceforge.net/p/testlilyissues/issues/search/?q=status:Accepted%20AND%20labels:Frog}
@end smallexample
-@subsubheading Patches to review
+@subsubheading Patches currently in the Patch Review cycle
+
+Overview
-Patches which have no @qq{obvious} problems:
+@c The following URL is provided by one of the Developers giving a much
+@c easier way to see all patches at all stages of the Review cycle in a
+@c single place.
@example
-@uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:patch-review}
+http://philholmes.net/lilypond/allura/
@end example
+@noindent
+New patches
+@smallexample
+@uref{https://sourceforge.net/p/testlilyissues/issues/search/?q=status%3AStarted+AND+_patch%3Anew}
+@end smallexample
+
+
+@noindent
+Patches under Review
+
+@smallexample
+@uref{https://sourceforge.net/p/testlilyissues/issues/search/?q=status%3AStarted+AND+_patch%3Areview}
+@end smallexample
+
+
+@noindent
+Patches on final Countdown
+
+@smallexample
+@uref{https://sourceforge.net/p/testlilyissues/issues/search/?q=status%3AStarted+AND+_patch%3Acountdown}
+@end smallexample
+
+
+@noindent
+Patches that can be pushed
+
+@smallexample
+@uref{https://sourceforge.net/p/testlilyissues/issues/search/?q=status%3AStarted+AND+_patch%3Apush}
+@end smallexample
@qq{Full installer for official Git} from:
@example
-@uref{http://code.google.com/p/msysgit/downloads/list}
+@uref{https://git-for-windows.github.io/}
@end example
@item Other operating systems: either install @command{git} with
@subsection Installing git
Obtain Git from
-@uref{http://code.google.com/p/msysgit/downloads/list} (note, not
-msysGit, which is for Git developers and not PortableGit, which is
-not a full git installation) and install it.
+@uref{https://git-for-windows.github.io/}.
Note that most users will not need to install SSH. That is not
required until you have been granted direct push permissions to
margin-bottom: 1em;
}
+table td {
+ vertical-align: top;
+ padding-bottom: .5em;
+}
+
/***********************************************************/
/* TOC SIDEBAR */
/***********************************************************/
Guide, node Updating translation committishes.
@end ignore
-@c \version "2.19.22"
+@c \version "2.19.40"
@c Translators: Till Paala
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
c8^\markup {"Beamed (2 2)"}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
c8^\markup {"Beamed (3 1)"}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(1 3) % beatStructure
+ 1,3 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
@lilypond[quote,relative=2,verbatim]
\time 5/16
c16^"default" c c c c |
-\set Timing.beatStructure = #'(2 3)
+\set Timing.beatStructure = 2,3
c16^"(2+3)" c c c c |
-\set Timing.beatStructure = #'(3 2)
+\set Timing.beatStructure = 3,2
c16^"(3+2)" c c c c |
@end lilypond
a8^"default" a a a a a a a
\set Timing.baseMoment = #(ly:make-moment 1/4)
-\set Timing.beatStructure = #'(1 1 1 1)
+\set Timing.beatStructure = 1,1,1,1
a8^"no change" a a a a a a a
\set Timing.beamExceptions = #'()
\set Timing.baseMoment = #(ly:make-moment 1/4)
-\set Timing.beatStructure = #'(1 1 1 1)
+\set Timing.beatStructure = 1,1,1,1
a8^"changed" a a a a a a a
@end lilypond
@lilypond[quote, verbatim,relative=1]
\new Staff <<
\time 7/8
- \set Staff.beatStructure = #'(2 3 2)
+ \set Staff.beatStructure = 2,3,2
\new Voice = one {
\relative {
a'8 a a a a a a
\new Voice = two {
\relative {
\voiceTwo
- \set Voice.beatStructure = #'(1 3 3)
+ \set Voice.beatStructure = 1,3,3
f'8 f f f f f f
}
}
% Context applied to Voice by dafault -- does not work correctly
% Because of autogenerated voices, all beating will
% be at baseMoment (1 . 8)
-\set beatStructure = #'(3 1 1 2)
+\set beatStructure = 3,1,1,2
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
% Works correctly with context Staff specified
-\set Staff.beatStructure = #'(3 1 1 2)
+\set Staff.beatStructure = 3,1,1,2
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
@end lilypond
@lilypond[quote,verbatim,relative=2]
\time 5/8
\set Timing.baseMoment = #(ly:make-moment 1/16)
-\set Timing.beatStructure = #'(7 3)
+\set Timing.beatStructure = 7,3
\repeat unfold 10 { a16 }
@end lilypond
@lilypond[quote,relative=2,verbatim]
\time 3/16
-\set Timing.beatStructure = #'(2 1)
+\set Timing.beatStructure = 2,1
\set Timing.beamExceptions =
#'( ;start of alist
(end . ;entry for end of beams
\time 6/8
\repeat unfold 6 { a8 }
% group (4 + 2)
- \set Timing.beatStructure = #'(4 2)
+ \set Timing.beatStructure = 4,2
\repeat unfold 6 { a8 }
% go back to default behavior
\time 6/8
@lilypond[quote,verbatim,fragment]
\time 4/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
-\set Timing.beatStructure = #'(3 3 2)
+\set Timing.beatStructure = 3,3,2
% This won't beam (3 3 2) because of beamExceptions
\repeat unfold 8 {c''8} |
% This will beam (3 3 2) because we clear beamExceptions
\new Staff {
\time 3/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
- \set Timing.beatStructure = #'(1 5)
+ \set Timing.beatStructure = 1,5
\repeat unfold 6 { a8 }
}
\new Staff {
\overrideTimeSignatureSettings
3/4 % timeSignatureFraction
1/8 % baseMomentFraction
- #'(1 5) % beatStructure
+ 1,5 % beatStructure
#'() % beamExceptions
\time 3/4
\repeat unfold 6 { a'8 }
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.19.22"
+@c \version "2.19.40"
@node Duraciones
@section Duraciones
\score {
\new Staff {
\relative {
- \time #'(2 2 3) 7/8
+ \time 2,2,3 7/8
\repeat unfold 7 { c'8 } |
- \time #'(3 2 2) 7/8
+ \time 3,2,2 7/8
\repeat unfold 7 { c8 } |
}
}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(1 3) % beatStructure
+ 1,3 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
% beamExceptions are unlikely to be defined for 5/16 time,
% but let's disable them anyway to be sure
\set Timing.beamExceptions = #'()
- \set Timing.beatStructure = #'(2 3)
+ \set Timing.beatStructure = 2,3
c16^"(2+3)" c c c c |
- \set Timing.beatStructure = #'(3 2)
+ \set Timing.beatStructure = 3,2
c16^"(3+2)" c c c c |
}
@end lilypond
% defined for 4/4 time
\set Timing.beamExceptions = #'()
\set Timing.baseMoment = #(ly:make-moment 1/4)
- \set Timing.beatStructure = #'(1 1 1 1)
+ \set Timing.beatStructure = 1,1,1,1
a8^"changed" a a a a a a a
}
@end lilypond
\time 7/8
% No need to disable beamExceptions
% as they are not defined for 7/8 time
- \set Staff.beatStructure = #'(2 3 2)
+ \set Staff.beatStructure = 2,3,2
<<
\new Voice = one {
\relative {
\new Voice = two {
\relative {
\voiceTwo
- \set Voice.beatStructure = #'(1 3 3)
+ \set Voice.beatStructure = 1,3,3
f'8 f f f f f f
}
}
% Change applied to Voice by default -- does not work correctly
% Because of autogenerated voices, all beating will
% be at baseMoment (1 . 8)
-\set beatStructure = #'(3 1 1 2)
+\set beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>
% Works correctly with context Staff specified
-\set Staff.beatStructure = #'(3 1 1 2)
+\set Staff.beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>
@end lilypond
% No need to disable beamExceptions
% as they are not defined for 5/8 time
\set Timing.baseMoment = #(ly:make-moment 1/16)
-\set Timing.beatStructure = #'(7 3)
+\set Timing.beatStructure = 7,3
\repeat unfold 10 { a'16 }
@end lilypond
@lilypond[quote,verbatim]
\relative c'' {
\time 3/16
- \set Timing.beatStructure = #'(2 1)
+ \set Timing.beatStructure = 2,1
\set Timing.beamExceptions =
\beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
c16 c c |
\time 6/8
\repeat unfold 6 { a8 }
% group (4 + 2)
- \set Timing.beatStructure = #'(4 2)
+ \set Timing.beatStructure = 4,2
\repeat unfold 6 { a8 }
% go back to default behavior
\time 6/8
@lilypond[quote,verbatim,fragment]
\time 4/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
-\set Timing.beatStructure = #'(3 3 2)
+\set Timing.beatStructure = 3,3,2
% This won't beam (3 3 2) because of beamExceptions
\repeat unfold 8 {c''8} |
% This will beam (3 3 2) because we clear beamExceptions
\new Staff {
\time 3/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
- \set Timing.beatStructure = #'(1 5)
+ \set Timing.beatStructure = 1,5
\set Timing.beamExceptions = #'()
\repeat unfold 6 { a'8 }
}
\overrideTimeSignatureSettings
3/4 % timeSignatureFraction
1/8 % baseMomentFraction
- #'(1 5) % beatStructure
+ 1,5 % beatStructure
#'() % beamExceptions
\time 3/4
\repeat unfold 6 { a'8 }
@multitable @columnfractions .33 .66
@item @code{@var{argN}}
-@tab @var{n}th argument
+@tab @var{n}th argument.
@item @code{@var{typeN?}}
-@tab a Scheme @emph{type predicate} for which @code{@var{argN}}
+@tab A Scheme @emph{type predicate} for which @code{@var{argN}}
must return @code{#t}. There is also a special form
@code{(@emph{predicate?} @emph{default})} for specifying optional
arguments. If the actual argument is missing when the function is being
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.19.22"
+@c \version "2.19.40"
@c Translators: Frédéric Chiasson, Jean-Charles Malahieude
@c Translation checkers: Valentin Villenave, François Martin, Xavier Scheuer
\score {
\new Staff {
\relative {
- \time #'(2 2 3) 7/8
+ \time 2,2,3 7/8
\repeat unfold 7 { c'8 } |
- \time #'(3 2 2) 7/8
+ \time 3,2,2 7/8
\repeat unfold 7 { c8 } |
}
}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(1 3) % beatStructure
+ 1,3 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
% beamExceptions are unlikely to be defined for 5/16 time,
% but let's disable them anyway to be sure
\set Timing.beamExceptions = #'()
- \set Timing.beatStructure = #'(2 3)
+ \set Timing.beatStructure = 2,3
c16^"(2+3)" c c c c |
- \set Timing.beatStructure = #'(3 2)
+ \set Timing.beatStructure = 3,2
c16^"(3+2)" c c c c |
}
@end lilypond
% defined for 4/4 time
\set Timing.beamExceptions = #'()
\set Timing.baseMoment = #(ly:make-moment 1/4)
- \set Timing.beatStructure = #'(1 1 1 1)
+ \set Timing.beatStructure = 1,1,1,1
a8^"changed" a a a a a a a
}
@end lilypond
\time 7/8
% No need to disable beamExceptions
% as they are not defined for 7/8 time
- \set Staff.beatStructure = #'(2 3 2)
+ \set Staff.beatStructure = 2,3,2
<<
\new Voice = one {
\relative {
\new Voice = two {
\relative {
\voiceTwo
- \set Voice.beatStructure = #'(1 3 3)
+ \set Voice.beatStructure = 1,3,3
f'8 f f f f f f
}
}
% Change applied to Voice by default -- does not work correctly
% Because of autogenerated voices, all beating will
% be at baseMoment (1 . 8)
-\set beatStructure = #'(3 1 1 2)
+\set beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>
% Works correctly with context Staff specified
-\set Staff.beatStructure = #'(3 1 1 2)
+\set Staff.beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>
@end lilypond
% No need to disable beamExceptions
% as they are not defined for 5/8 time
\set Timing.baseMoment = #(ly:make-moment 1/16)
-\set Timing.beatStructure = #'(7 3)
+\set Timing.beatStructure = 7,3
\repeat unfold 10 { a'16 }
@end lilypond
@lilypond[quote,verbatim]
\relative c'' {
\time 3/16
- \set Timing.beatStructure = #'(2 1)
+ \set Timing.beatStructure = 2,1
\set Timing.beamExceptions =
\beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
c16 c c |
\time 6/8
\repeat unfold 6 { a8 }
% group (4 + 2)
- \set Timing.beatStructure = #'(4 2)
+ \set Timing.beatStructure = 4,2
\repeat unfold 6 { a8 }
% go back to default behavior
\time 6/8
@lilypond[quote,verbatim,fragment]
\time 4/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
-\set Timing.beatStructure = #'(3 3 2)
+\set Timing.beatStructure = 3,3,2
% This won't beam (3 3 2) because of beamExceptions
\repeat unfold 8 {c''8} |
% This will beam (3 3 2) because we clear beamExceptions
\new Staff {
\time 3/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
- \set Timing.beatStructure = #'(1 5)
+ \set Timing.beatStructure = 1,5
\set Timing.beamExceptions = #'()
\repeat unfold 6 { a'8 }
}
\overrideTimeSignatureSettings
3/4 % timeSignatureFraction
1/8 % baseMomentFraction
- #'(1 5) % beatStructure
+ 1,5 % beatStructure
#'() % beamExceptions
\time 3/4
\repeat unfold 6 { a'8 }
@ The `line-width' is for \header.
@li lypond[quote,verbatim,ragged-right,line-width]
-\version "2.19.2"
+\version "2.19.25"
\header {
dedication = "dedication"
title = "Title"
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.19.22"
+@c \version "2.19.40"
@c Translators: Federico Bruni
@c Translation checkers: Luca Rossetto Casel
\score {
\new Staff {
\relative {
- \time #'(2 2 3) 7/8
+ \time 2,2,3 7/8
\repeat unfold 7 { c'8 } |
- \time #'(3 2 2) 7/8
+ \time 3,2,2 7/8
\repeat unfold 7 { c8 } |
}
}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(1 3) % beatStructure
+ 1,3 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
% È improbabile che per un tempo di 5/16 sia stata definita beamExceptions,
% ma disabilitiamola lo stesso per sicurezza
\set Timing.beamExceptions = #'()
- \set Timing.beatStructure = #'(2 3)
+ \set Timing.beatStructure = 2,3
c16^"(2+3)" c c c c |
- \set Timing.beatStructure = #'(3 2)
+ \set Timing.beatStructure = 3,2
c16^"(3+2)" c c c c |
}
@end lilypond
% per il tempo 4/4
\set Timing.beamExceptions = #'()
\set Timing.baseMoment = #(ly:make-moment 1/4)
- \set Timing.beatStructure = #'(1 1 1 1)
+ \set Timing.beatStructure = 1,1,1,1
a8^"cambiato" a a a a a a a
}
@end lilypond
\time 7/8
% Nessun bisogno di disabilitare beamExceptions perché non è definita per il tempo 7/8
- \set Staff.beatStructure = #'(2 3 2)
+ \set Staff.beatStructure = 2,3,2
<<
\new Voice = one {
\relative {
\new Voice = two {
\relative {
\voiceTwo
- \set Voice.beatStructure = #'(1 3 3)
+ \set Voice.beatStructure = 1,3,3
f'8 f f f f f f
}
}
% ritmo 3-1-1-2
% Se non si specifica il contesto, la modifica viene applicata a Voice e quindi non funziona correttamente
% Dato che le voci sono autogenerate, tutto il ritmo avrà come baseMoment (1 . 8)
-\set beatStructure = #'(3 1 1 2)
+\set beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>
% Funziona correttamente se si specifica il contesto Staff
-\set Staff.beatStructure = #'(3 1 1 2)
+\set Staff.beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>
@end lilypond
\time 5/8
% Nessun bisogno di disabilitare beamExceptions perché non è definita per il tempo 5/8
\set Timing.baseMoment = #(ly:make-moment 1/16)
-\set Timing.beatStructure = #'(7 3)
+\set Timing.beatStructure = 7,3
\repeat unfold 10 { a16 }
@end lilypond
@lilypond[quote,verbatim]
\relative c'' {
\time 3/16
- \set Timing.beatStructure = #'(2 1)
+ \set Timing.beatStructure = 2,1
\set Timing.beamExceptions =
\beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
c16 c c |
\time 6/8
\repeat unfold 6 { a8 }
% raggruppamento (4 + 2)
- \set Timing.beatStructure = #'(4 2)
+ \set Timing.beatStructure = 4,2
\repeat unfold 6 { a8 }
% ritorno al comportamento predefinito
\time 6/8
@lilypond[quote,verbatim,fragment]
\time 4/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
-\set Timing.beatStructure = #'(3 3 2)
+\set Timing.beatStructure = 3,3,2
% Le travature non saranno raggruppate in (3 3 2) a causa di beamExceptions
\repeat unfold 8 {c8} |
% Il raggruppamento delle travature è (3 3 2) perché abbiamo tolto le impostazioni predefinite di beamExceptions
\new Staff {
\time 3/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
- \set Timing.beatStructure = #'(1 5)
+ \set Timing.beatStructure = 1,5
\set Timing.beamExceptions = #'()
\repeat unfold 6 { a'8 }
}
\overrideTimeSignatureSettings
3/4 % timeSignatureFraction
1/8 % baseMomentFraction
- #'(1 5) % beatStructure
+ 1,5 % beatStructure
#'() % beamExceptions
\time 3/4
\repeat unfold 6 { a'8 }
version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.19.22"
+@c \version "2.19.40"
@c Translators: Yoshiki Sawada
@c Translation status: post-GDP
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
c8^\markup {"Beamed (2 2)"}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
c8^\markup {"Beamed (3 1)"}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(1 3) % beatStructure
+ 1,3 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
@lilypond[quote,relative=2,verbatim]
\time 5/16
c16^"default" c c c c |
-\set Timing.beatStructure = #'(2 3)
+\set Timing.beatStructure = 2,3
c16^"(2+3)" c c c c |
-\set Timing.beatStructure = #'(3 2)
+\set Timing.beatStructure = 3,2
c16^"(3+2)" c c c c |
@end lilypond
@lilypond[quote, verbatim,relative=1]
\new Staff {
\time 7/8
- \set Staff.beatStructure = #'(2 3 2)
+ \set Staff.beatStructure = 2,3,2
<<
\new Voice = one {
\relative {
\new Voice = two {
\relative {
\voiceTwo
- \set Voice.beatStructure = #'(1 3 3)
+ \set Voice.beatStructure = 1,3,3
f'8 f f f f f f
}
}
% リズム 3-1-1-2
% デフォルトで連桁設定の変更は Voice に適用され、うまくいきません
% なぜなら、自動生成されるボイスで、すべての拍は baseMoment (1 . 8) だからです
-\set beatStructure = #'(3 1 1 2)
+\set beatStructure = 3,1,1,2
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
% コンテキスト Staff を指定するとうまくいきます
-\set Staff.beatStructure = #'(3 1 1 2)
+\set Staff.beatStructure = 3,1,1,2
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
@end lilypond
@lilypond[quote,verbatim,relative=2]
\time 5/8
\set Timing.baseMoment = #(ly:make-moment 1/16)
-\set Timing.beatStructure = #'(7 3)
+\set Timing.beatStructure = 7,3
\repeat unfold 10 { a16 }
@end lilypond
@c 未訳
@lilypond[quote,relative=2,verbatim]
\time 3/16
-\set Timing.beatStructure = #'(2 1)
+\set Timing.beatStructure = 2,1
\set Timing.beamExceptions =
#'( ;start of alist
(end . ;entry for end of beams
\time 6/8
\repeat unfold 6 { a8 }
% (4 + 2) にグループ化します
-\set Timing.beatStructure = #'(4 2)
+\set Timing.beatStructure = 4,2
\repeat unfold 6 { a8 }
% デフォルトの振る舞いに戻ります
\time 6/8
@lilypond[quote,verbatim,relative=2]
\time 4/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
-\set Timing.beatStructure = #'(3 3 2)
+\set Timing.beatStructure = 3,3,2
% 以下は beamExceptions のため、(3 3 2) の連桁にはなりません
\repeat unfold 8 {c8} |
% 以下は beamExceptions をクリアするため、(3 3 2) の連桁になります
\new Staff {
\time 3/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
- \set Timing.beatStructure = #'(1 5)
+ \set Timing.beatStructure = 1,5
\repeat unfold 6 { a8 }
}
\new Staff {
\overrideTimeSignatureSettings
3/4 % timeSignatureFraction
1/8 % baseMomentFraction
- #'(1 5) % beatStructure
+ 1,5 % beatStructure
#'() % beamExceptions
\time 3/4
\repeat unfold 6 { a'8 }
-\version "2.19.21"
+\version "2.19.40"
\include "example-header.ily"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
<f aes d f>8\([ \tuplet 5/4{<g g'>32( aes' g f g]) }
\set subdivideBeams = ##t
\set baseMoment = #(ly:make-moment 1/8)
- \set beatStructure = #'(2 2 2)
+ \set beatStructure = 2,2,2
<aes, aes'>16 <c f> \tuplet 5/4{ bes'32( c bes aes bes]) }
\set subdivideBeams = ##f
\ottava #1 <es es'>16 <f f'> <d d'> \appoggiatura f8 <es es'>16\)
\csl \stemUp
\set subdivideBeams = ##t
\set baseMoment = #(ly:make-moment 1/16)
- \set beatStructure = #'(4 4 4)
+ \set beatStructure = 4,4,4
s8 \hideNotes \slurUp \stemDown
es,,64( bes'' s64 \unHideNotes \stemUp g64[ bes c d c]) s2
\set subdivideBeams = ##f
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.19.22"
+@c \version "2.19.40"
@node Rhythms
@section Rhythms
\score {
\new Staff {
\relative {
- \time #'(2 2 3) 7/8
+ \time 2,2,3 7/8
\repeat unfold 7 { c'8 } |
- \time #'(3 2 2) 7/8
+ \time 3,2,2 7/8
\repeat unfold 7 { c8 } |
}
}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 { c8 } |
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(1 3) % beatStructure
+ 1,3 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
% beamExceptions are unlikely to be defined for 5/16 time,
% but let's disable them anyway to be sure
\set Timing.beamExceptions = #'()
- \set Timing.beatStructure = #'(2 3)
+ \set Timing.beatStructure = 2,3
c16^"(2+3)" c c c c |
- \set Timing.beatStructure = #'(3 2)
+ \set Timing.beatStructure = 3,2
c16^"(3+2)" c c c c |
}
@end lilypond
% defined for 4/4 time
\set Timing.beamExceptions = #'()
\set Timing.baseMoment = #(ly:make-moment 1/4)
- \set Timing.beatStructure = #'(1 1 1 1)
+ \set Timing.beatStructure = 1,1,1,1
a8^"changed" a a a a a a a
}
@end lilypond
\time 7/8
% No need to disable beamExceptions
% as they are not defined for 7/8 time
- \set Staff.beatStructure = #'(2 3 2)
+ \set Staff.beatStructure = 2,3,2
<<
\new Voice = one {
\relative {
\new Voice = two {
\relative {
\voiceTwo
- \set Voice.beatStructure = #'(1 3 3)
+ \set Voice.beatStructure = 1,3,3
f'8 f f f f f f
}
}
% Change applied to Voice by default -- does not work correctly
% Because of autogenerated voices, all beating will
% be at baseMoment (1 . 8)
-\set beatStructure = #'(3 1 1 2)
+\set beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>
% Works correctly with context Staff specified
-\set Staff.beatStructure = #'(3 1 1 2)
+\set Staff.beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>
@end lilypond
% No need to disable beamExceptions
% as they are not defined for 5/8 time
\set Timing.baseMoment = #(ly:make-moment 1/16)
-\set Timing.beatStructure = #'(7 3)
+\set Timing.beatStructure = 7,3
\repeat unfold 10 { a'16 }
@end lilypond
@lilypond[quote,verbatim]
\relative c'' {
\time 3/16
- \set Timing.beatStructure = #'(2 1)
+ \set Timing.beatStructure = 2,1
\set Timing.beamExceptions =
\beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
c16 c c |
\time 6/8
\repeat unfold 6 { a8 }
% group (4 + 2)
- \set Timing.beatStructure = #'(4 2)
+ \set Timing.beatStructure = 4,2
\repeat unfold 6 { a8 }
% go back to default behavior
\time 6/8
@lilypond[quote,verbatim,fragment]
\time 4/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
-\set Timing.beatStructure = #'(3 3 2)
+\set Timing.beatStructure = 3,3,2
% This won't beam (3 3 2) because of beamExceptions
\repeat unfold 8 {c''8} |
% This will beam (3 3 2) because we clear beamExceptions
\new Staff {
\time 3/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
- \set Timing.beatStructure = #'(1 5)
+ \set Timing.beatStructure = 1,5
\set Timing.beamExceptions = #'()
\repeat unfold 6 { a'8 }
}
\overrideTimeSignatureSettings
3/4 % timeSignatureFraction
1/8 % baseMomentFraction
- #'(1 5) % beatStructure
+ 1,5 % beatStructure
#'() % beamExceptions
\time 3/4
\repeat unfold 6 { a'8 }
%% and then run scripts/auxiliar/makelsr.py
%%
%% This file is in the public domain.
-\version "2.18.0"
+\version "2.19.40"
\header {
lsrtags = "automatic-notation, connecting-notes, rhythms"
>>
\oneVoice
\set baseMoment = #(ly:make-moment 1/8)
- \set beatStructure = #'(2 2 2 2)
+ \set beatStructure = 2,2,2,2
b32^"baseMoment 1 8"[ a g f c' b a g]
\set baseMoment = #(ly:make-moment 1/16)
- \set beatStructure = #'(4 4 4 4)
+ \set beatStructure = 4,4,4,4
b32^"baseMoment 1 16"[ a g f c' b a g]
}
}
%% and then run scripts/auxiliar/makelsr.py
%%
%% This file is in the public domain.
-\version "2.18.0"
+\version "2.19.40"
\header {
lsrtags = "rhythms"
\time 5/4
% Set default beaming for all staves
\set Score.baseMoment = #(ly:make-moment 1/8)
- \set Score.beatStructure = #'(3 4 3)
+ \set Score.beatStructure = 3,4,3
<<
\new Staff {
c8 c c c c c c c c c
}
\new Staff {
% Modify beaming for just this staff
- \set Staff.beatStructure = #'(6 4)
+ \set Staff.beatStructure = 6,4
c8 c c c c c c c c c
}
\new Staff {
% Modify beaming for this voice only
\new Voice {
\voiceTwo
- \set Voice.beatStructure = #'(6 4)
+ \set Voice.beatStructure = 6,4
a8 a a a a a a a a a
}
>>
%% and then run scripts/auxiliar/makelsr.py
%%
%% This file is in the public domain.
-\version "2.18.0"
+\version "2.19.40"
\header {
lsrtags = "rhythms"
\new Voice \relative c'' {
\time 9/8
g8 g d d g g a( bes g) |
- \set Timing.beatStructure = #'(2 2 2 3)
+ \set Timing.beatStructure = 2,2,2,3
g8 g d d g g a( bes g) |
- \time #'(4 5) 9/8
+ \time 4,5 9/8
g8 g d d g g a( bes g) |
\time 5/8
a4. g4 |
-\version "2.19.34"
+\version "2.19.40"
\header {
lsrtags = "rhythms"
% Set beam sub-group length to an eighth note
\set baseMoment = #(ly:make-moment 1/8)
- \set beatStructure = #'(2 2 2 2)
+ \set beatStructure = 2,2,2,2
c32[ c c c c c c c]
% Set beam sub-group length to a sixteenth note
\set baseMoment = #(ly:make-moment 1/16)
- \set beatStructure = #'(4 4 4 4)
+ \set beatStructure = 4,4,4,4
c32[ c c c c c c c]
% Shorten beam by 1/32
\set baseMoment = #(ly:make-moment 1/8)
- \set beatStructure = #'(2 2 2 2)
+ \set beatStructure = 2,2,2,2
c32[ c c c c c c] r32
% Shorten beam by 3/32
\set baseMoment = #(ly:make-moment 1/8)
- \set beatStructure = #'(2 2 2 2)
+ \set beatStructure = 2,2,2,2
c32[ c c c c] r16.
r2
}
--- /dev/null
+\version "2.19.16"
+
+\header {
+ lsrtags = "rhythms"
+
+ texidoc = "
+New time signature styles can be defined. The time signature in
+the second measure should be upside down in both staves.
+"
+
+ doctitle = "User defined time signatures"
+}
+
+#(add-simple-time-signature-style 'topsy-turvy
+ (lambda (fraction)
+ (make-rotate-markup 180 (make-compound-meter-markup fraction))))
+
+<<
+ \new Staff {
+ \time 3/4 f'2.
+ \override Score.TimeSignature.style = #'topsy-turvy
+ \time 3/4 R2. \bar "|."
+ }
+ \new Staff {
+ R2. e''
+ }
+>>
%% and then run scripts/auxiliar/makelsr.py
%%
%% This file is in the public domain.
-\version "2.18.0"
+\version "2.19.40"
\header {
lsrtags = "rhythms, version-specific"
a8 a a a a a a a a a a a
% Set new values for beam endings
- \set Score.beatStructure = #'(3 4 3 2)
+ \set Score.beatStructure = 3,4,3,2
a8 a a a a a a a a a a a
}
time-signature-in-parentheses.ly
time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly
tweaking-grace-layout-within-music.ly
+user-defined-time-signatures.ly
using-alternative-flag-styles.ly
using-grace-note-slashes-with-normal-heads.ly
using-ties-with-arpeggios.ly
\key c \major
\relative c''
{
- % disable the following line to see the the noteheads while writing the song
+ % disable the following line to see the noteheads while writing the song
\NoNoteHead
\override NoteHead.no-ledgers = ##t
% and then run scripts/auxiliar/makelsr.py
%
% This file is in the public domain.
-%% Note: this file works from version 2.19.34
-\version "2.19.34"
+%% Note: this file works from version 2.19.40
+\version "2.19.40"
\header {
lsrtags = "rhythms"
% Set beam sub-group length to an eighth note
\set baseMoment = #(ly:make-moment 1/8)
- \set beatStructure = #'(2 2 2 2)
+ \set beatStructure = 2,2,2,2
c32[ c c c c c c c]
% Set beam sub-group length to a sixteenth note
\set baseMoment = #(ly:make-moment 1/16)
- \set beatStructure = #'(4 4 4 4)
+ \set beatStructure = 4,4,4,4
c32[ c c c c c c c]
% Shorten beam by 1/32
\set baseMoment = #(ly:make-moment 1/8)
- \set beatStructure = #'(2 2 2 2)
+ \set beatStructure = 2,2,2,2
c32[ c c c c c c] r32
% Shorten beam by 3/32
\set baseMoment = #(ly:make-moment 1/8)
- \set beatStructure = #'(2 2 2 2)
+ \set beatStructure = 2,2,2,2
c32[ c c c c] r16.
r2
}
--- /dev/null
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.19.16
+\version "2.19.16"
+
+\header {
+ lsrtags = "rhythms"
+
+ texidoc = "
+New time signature styles can be defined. The time signature in
+the second measure should be upside down in both staves.
+"
+
+ doctitle = "User defined time signatures"
+} % begin verbatim
+
+
+#(add-simple-time-signature-style 'topsy-turvy
+ (lambda (fraction)
+ (make-rotate-markup 180 (make-compound-meter-markup fraction))))
+
+<<
+ \new Staff {
+ \time 3/4 f'2.
+ \override Score.TimeSignature.style = #'topsy-turvy
+ \time 3/4 R2. \bar "|."
+ }
+ \new Staff {
+ R2. e''
+ }
+>>
@c used for news about the upcoming release; see CG 10.2
@newsItem
-@subheading LilyPond 2.19.38 released @emph{March 13, 2016}
+@subheading LilyPond 2.19.39 released @emph{March 27, 2016}
We are happy to announce the release of LilyPond
-2.19.38. This release includes a number of enhancements, and contains some
+2.19.39. This release includes a number of enhancements, and contains some
work in progress. You will have access to the very latest features, but
some may be incomplete, and you may encounter bugs and crashes. If you
require a stable version of Lilypond, we recommend using the 2.18
* don't duplicate entries from news-front.itexi
@end ignore
+@newsItem
+@subheading LilyPond 2.19.38 released @emph{March 13, 2016}
+
+We are happy to announce the release of LilyPond
+2.19.38. This release includes a number of enhancements, and contains some
+work in progress. You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes. If you
+require a stable version of Lilypond, we recommend using the 2.18
+version.
+
+@newsEnd
+
@newsItem
@subheading LilyPond 2.19.37 released @emph{February 28, 2016}
RewriteEngine On
+# Permanent redirect from www.lilypond.org to lilypond.org
+RewriteCond "%{HTTP_HOST}" "^www\.(.+)$" [NC]
+RewriteRule "^/?(.*)$" "http://%1/$1" [R=301,L,NE]
+
# Deny following of symlinks by robots.
# HTTrack is a known offender.
# better yet, to redirect this to page that tells adminstrator
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=19
-PATCH_LEVEL=39
+PATCH_LEVEL=40
MY_PATCH_LEVEL=
VERSION_STABLE=2.18.2
-VERSION_DEVEL=2.19.38
+VERSION_DEVEL=2.19.39
STEPMAKE_PROGS(PDFLATEX, xelatex pdflatex, $DOCUMENTATION_REQUIRED)
if test "$PDFLATEX" = "xelatex"; then
STEPMAKE_PROGS(PDFTEX, xetex, $DOCUMENTATION_REQUIRED)
+ if test "$PDFTEX" = "xetex"; then
+ # For avoiding PDF destination name replacement.
+ PDFTEX=$ugh_ugh_autoconf250_builddir/scripts/build/out$CONFIGSUFFIX/xetex-with-options
+ fi
else
STEPMAKE_PROGS(PDFTEX, pdfetex pdftex etex, $DOCUMENTATION_REQUIRED)
fi
-\version "2.17.11"
+\version "2.19.40"
\header {
c c c r r4 \bar "||"
\set Timing.baseMoment = #(ly:make-moment 1/8)
- \set Timing.beatStructure = #'(3 3)
+ \set Timing.beatStructure = 3,3
r8^\markup "Override to beam groups of 3 eighth notes" c c c c c
r4. c8 c c c c c r4.
}
\layout {
ragged-right = ##t
}
-\version "2.19.21"
+\version "2.19.40"
\relative {
\time 5/16
- \set beatStructure = #'(2 3)
+ \set beatStructure = 2,3
c''8[^"(2+3)" c16 c8]
- \set beatStructure = #'(3 2)
+ \set beatStructure = 3,2
c8[^"(3+2)" c16 c8]
}
\version "2.16.0"
\header {
texidoc = "The layout of the major 7 can be tuned with
-@code{majorSevenSymbol}."
+@code{majorSevenSymbol}. It does not break if @code{majorSevenSymbol} is unset.
+One should see: triangle - j7 - triangle - #7."
}
\chords {
c:7+
\set majorSevenSymbol = \markup { "j7" }
c:7+
+ \unset majorSevenSymbol
+ c:7+
+ \unset Score.majorSevenSymbol
+ c:7+
}
-\version "2.19.24"
+\version "2.19.40"
#(use-modules (srfi srfi-13)
(ice-9 format))
\test ##[ \clef "bass^(15)" #]
\test ##[ \clef "alto_3" #]
\test ##[ \time 2/4 #]
-\test ##[ \time #'(3 2) 5/8 #]
+\test ##[ \time 3,2 5/8 #]
\test ##[ \bar "|." #]
%% staff switches
}
-\version "2.19.21"
+\version "2.19.40"
\layout {
ragged-right = ##t
\relative {
\time 2/4
c'8 a'4 a8~
- \time #'(3 2) 5/8
+ \time 3,2 5/8
a8 bes4 r8 bes8->
\time 2/4
c,8 g'4 g8~
- \time #'(3 2) 5/8
+ \time 3,2 5/8
g8 a4 g a4.->
}
-\version "2.16.0"
+\version "2.19.40"
\header {
texidoc = "
\overrideTimeSignatureSettings
#'(4 . 4) % time signature fraction
#'(1 . 4) % base moment fraction
- #'(1 1 1 1) % beatStructure
+ 1,1,1,1 % beatStructure
#'() % beamExceptions
\overrideTimeSignatureSettings
#'(3 . 4) % time signature fraction
#'(1 . 4) % base moment fraction
- #'(1 1 1) % beatStructure
+ 1,1,1 % beatStructure
#'() % beamExceptions
\time 4/4
c8^\markup {"Beam by 1/4"} c c c c c c c |
-\version "2.16.0"
+\version "2.19.40"
\header {
texidoc = "
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(3 1) % beatStructure
+ 3,1 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
\overrideTimeSignatureSettings
4/4 % timeSignatureFraction
1/4 % baseMomentFraction
- #'(1 3) % beatStructure
+ 1,3 % beatStructure
#'() % beamExceptions
\time 4/4
\repeat unfold 8 {c''8}
-\version "2.19.21"
+\version "2.19.40"
\header {
\relative {
\set subdivideBeams = ##t
\set baseMoment = #(ly:make-moment 1/8)
- \set beatStructure = #'(2 2 2 2)
+ \set beatStructure = 2,2,2,2
\repeat unfold 8 {
\tuplet 3/2 { c''16 e d }
}
identifier_init:
identifier_init_nonumber
| number_expression
+ | symbol_list_part_bare '.' property_path
+ {
+ $$ = scm_reverse_x ($1, $3);
+ }
+ | symbol_list_part_bare ',' property_path
+ {
+ $$ = scm_reverse_x ($1, $3);
+ }
| post_event_nofinger post_events
{
$$ = scm_reverse_x ($2, SCM_EOL);
| UNSIGNED
;
+symbol_list_part_bare:
+ STRING
+ {
+ $$ = try_string_variants (Lily::key_list_p, $1);
+ if (SCM_UNBNDP ($$)) {
+ parser->parser_error (@1, _("not a key"));
+ $$ = SCM_EOL;
+ } else
+ $$ = scm_reverse ($$);
+ }
+ | UNSIGNED
+ {
+ $$ = scm_list_1 ($1);
+ }
+ ;
function_arglist_nonbackup:
function_arglist_common
$$ = scm_difference ($2, SCM_UNDEFINED);
}
| string
+ | symbol_list_part_bare '.' property_path
+ {
+ $$ = scm_reverse_x ($1, $3);
+ }
+ | symbol_list_part_bare ',' property_path
+ {
+ $$ = scm_reverse_x ($1, $3);
+ }
;
event_chord:
%}
-\version "2.19.38" % necessary for upgrading to future LilyPond versions.
+\version "2.19.39" % necessary for upgrading to future LilyPond versions.
\header{
title = "A scale in LilyPond"
%}
-\version "2.19.38" % necessary for upgrading to future LilyPond versions.
+\version "2.19.39" % necessary for upgrading to future LilyPond versions.
\header{
title = "A scale in LilyPond"
#(use-modules (scm graphviz))
+#(use-modules (ice-9 regex))
+
#(define last-grob-action '())
#(define sym-blacklist '())
#(define (grob-mod grob file line func prop val)
(let* ((val-str (truncate-value val))
- (label (format #f "~a\\n~a:~a\\n~a <- ~a" (grob::name grob) file line prop val-str)))
+ (label (format #f "~a\\n~a:~a\\n~a <- ~a" (grob::name grob) file line prop val-str))
+ ;; to keep escaped "\"" we need to transform it to "\\\""
+ ;; otherwise the final pdf-creation will break
+ (escaped-label
+ (regexp-substitute/global #f "\"" label 'pre "\\\"" 'post)))
(if (relevant? grob file line prop)
- (grob-event-node grob label file))))
+ (grob-event-node grob escaped-label file))))
#(define (grob-cache grob prop callback value)
(let* ((val-str (truncate-value value))
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: lilypond 2.19.38\n"
+"Project-Id-Version: lilypond 2.19.39\n"
"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu."
"lilypond.bugs\n"
-"POT-Creation-Date: 2016-03-13 12:28+0000\n"
+"POT-Creation-Date: 2016-03-27 15:42+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "cannot find line breaking that satisfies constraints"
msgstr ""
-#: context-property.cc:45
-msgid "need symbol arguments for \\override and \\revert"
+#: context-property.cc:46
+msgid "need symbol argument for \\override and \\revert"
msgstr ""
#: context.cc:143
msgid "already have a text spanner"
msgstr ""
-#: text-spanner-engraver.cc:130
+#: text-spanner-engraver.cc:132
msgid "unterminated text spanner"
msgstr ""
msgid "giving up"
msgstr ""
-#: parser.yy:478 parser.yy:949 parser.yy:1030 parser.yy:1250
+#: parser.yy:480 parser.yy:963 parser.yy:1044 parser.yy:1264
msgid "bad expression type"
msgstr ""
-#: parser.yy:861 parser.yy:1460 parser.yy:1505
+#: parser.yy:875 parser.yy:1474 parser.yy:1519
msgid "not a context mod"
msgstr ""
-#: parser.yy:1056
+#: parser.yy:1070
msgid "Missing music in \\score"
msgstr ""
-#: parser.yy:1093
+#: parser.yy:1107
msgid "\\paper cannot be used in \\score, use \\layout instead"
msgstr ""
-#: parser.yy:1128
+#: parser.yy:1142
msgid "Spurious expression in \\score"
msgstr ""
-#: parser.yy:1158
+#: parser.yy:1172
msgid "need \\paper for paper block"
msgstr ""
-#: parser.yy:1333
+#: parser.yy:1347
msgid "music expected"
msgstr ""
-#: parser.yy:1343 parser.yy:1377
+#: parser.yy:1357 parser.yy:1391
msgid "unexpected post-event"
msgstr ""
-#: parser.yy:1385
+#: parser.yy:1399
msgid "Ignoring non-music expression"
msgstr ""
-#: parser.yy:1693
-msgid "not a symbol"
+#: parser.yy:1715
+msgid "not a key"
msgstr ""
-#: parser.yy:2562 parser.yy:2676 parser.yy:2689 parser.yy:2698
+#: parser.yy:2588 parser.yy:2706 parser.yy:2719 parser.yy:2728
msgid "bad grob property path"
msgstr ""
-#: parser.yy:2656
+#: parser.yy:2686
msgid "only \\consists and \\remove take non-string argument."
msgstr ""
-#: parser.yy:2717
+#: parser.yy:2747
msgid "bad context property path"
msgstr ""
-#: parser.yy:2802
+#: parser.yy:2832
msgid "markup expected"
msgstr ""
-#: parser.yy:2814
+#: parser.yy:2844
msgid "simple string expected"
msgstr ""
-#: parser.yy:2831
+#: parser.yy:2861
msgid "symbol expected"
msgstr ""
-#: parser.yy:2967
+#: parser.yy:2997
msgid "not a rhythmic event"
msgstr ""
-#: parser.yy:3017
+#: parser.yy:3047
msgid "post-event expected"
msgstr ""
-#: parser.yy:3026 parser.yy:3031
+#: parser.yy:3056 parser.yy:3061
msgid "have to be in Lyric mode for lyrics"
msgstr ""
-#: parser.yy:3107
+#: parser.yy:3137
msgid "expecting string or post-event as script definition"
msgstr ""
-#: parser.yy:3211
+#: parser.yy:3241
msgid "not an articulation"
msgstr ""
-#: parser.yy:3277 parser.yy:3329
+#: parser.yy:3307 parser.yy:3359
msgid "not a duration"
msgstr ""
-#: parser.yy:3350
+#: parser.yy:3380
msgid "bass number expected"
msgstr ""
-#: parser.yy:3442
+#: parser.yy:3472
msgid "have to be in Note mode for notes"
msgstr ""
-#: parser.yy:3481
+#: parser.yy:3511
msgid "have to be in Chord mode for chords"
msgstr ""
-#: parser.yy:3524
+#: parser.yy:3554
msgid "markup outside of text script or \\lyricmode"
msgstr ""
-#: parser.yy:3529
+#: parser.yy:3559
msgid "unrecognized string, not in text script or \\lyricmode"
msgstr ""
-#: parser.yy:3681 parser.yy:3690
+#: parser.yy:3711 parser.yy:3720
msgid "not an unsigned integer"
msgstr ""
-#: parser.yy:3777
+#: parser.yy:3807
msgid "not a markup"
msgstr ""
msgid "cannot find: ~A"
msgstr ""
-#: lily.scm:906
+#: lily.scm:910
msgid "Success: compilation successfully completed"
msgstr ""
-#: lily.scm:907
+#: lily.scm:911
msgid "Compilation completed with warnings or errors"
msgstr ""
-#: lily.scm:968
+#: lily.scm:972
#, scheme-format
msgid "job ~a terminated with signal: ~a"
msgstr ""
-#: lily.scm:971
+#: lily.scm:975
#, scheme-format
msgid ""
"logfile ~a (exit ~a):\n"
"~a"
msgstr ""
-#: lily.scm:993 lily.scm:1082
+#: lily.scm:997 lily.scm:1086
#, scheme-format
msgid "failed files: ~S"
msgstr ""
-#: lily.scm:1073
+#: lily.scm:1077
#, scheme-format
msgid "Redirecting output to ~a..."
msgstr ""
-#: lily.scm:1092
+#: lily.scm:1096
#, scheme-format
msgid "Invoking `~a'...\n"
msgstr ""
str = re.sub (r"#'whiteout-box(?![a-z_-])\b", r"#'whiteout", str)
return str
+@rule ((2, 19, 40), r"\time #'(2 3) ... -> \time 2,3 ...")
+def conv (str):
+ def repl (m):
+ return m.group(1) + re.sub (r"\s+", ",", m.group (2))
+
+ str = re.sub (r"(beatStructure\s*=\s*)#'\(([0-9]+(?:\s+[0-9]+)+)\)",
+ repl, str)
+
+ str = re.sub (r"(\\time\s*)#'\(([0-9]+(?:\s+[0-9]+)+)\)", repl, str)
+ def repl (m):
+ subst = re.sub (r"\s+", ",", m.group (1))
+ return subst + (4 + len (m.group (1)) - len (subst)) * " " + m.group (2)
+
+ str = re.sub (r"#'\(([0-9]+(?:\s+[0-9]+)+)\)(\s+%\s*beatStructure)",
+ repl, str)
+ return str
+
# Guidelines to write rules (please keep this at the end of this file)
#
# - keep at most one rule per version; if several conversions should be done,
(let* ((num-markup (make-simple-markup
(number->string (pitch-step pitch))))
(args (list num-markup))
- (total (if (= (ly:pitch-alteration pitch) 0)
- (if (= (pitch-step pitch) 7)
- (list (ly:context-property context 'majorSevenSymbol))
- args)
+ (major-seven-symbol (ly:context-property context 'majorSevenSymbol))
+ (total
+ (if (and (= (ly:pitch-alteration pitch) 0)
+ (= (pitch-step pitch) 7)
+ (markup? major-seven-symbol))
+ (list major-seven-symbol)
(cons (accidental->markup (step-alteration pitch)) args))))
(make-line-markup total)))
### add google tracker header
if (line.find("</head>") >= 0):
outfile.write("""<!-- Google tracking !-->
-<script src="http://www.google-analytics.com/urchin.js"
-type="text/javascript">
-</script>
-<script type="text/javascript">
-_uacct = "UA-68969-1";
-urchinTracker();
+<script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-68969-1', 'auto');
+ ga('send', 'pageview');
+
</script>
""");
#### add google tracker goals
--- /dev/null
+#!/bin/sh
+
+# By the default settings,
+# XeTeX (xdvipdfmx) replaces link destination names with integers.
+# In this case, the replaced destination names of
+# remote PDF cannot be known. In order to avoid replacement,
+# we can use commandline option `-C 0x0010' for xdvipdfmx.
+
+exec xetex --output-driver='xdvipdfmx -C 0x0010' "$@"
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2016-02-15.14}
+\def\texinfoversion{2016-03-29.15}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
% Margin to add to right of even pages, to left of odd pages.
\newdimen\bindingoffset
\newdimen\normaloffset
-\newdimen\pagewidth \newdimen\pageheight
+\newdimen\txipagewidth \newdimen\txipageheight
% Main output routine.
%
% Common context changes for both heading and footing.
% Do this outside of the \shipout so @code etc. will be expanded in
% the headline as they should be, not taken literally (outputting ''code).
- \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars}
+ \def\commmonheadfootline{\let\hsize=\txipagewidth \texinfochars}
%
% Retrieve the information for the headings from the marks in the page,
% and call Plain TeX's \makeheadline and \makefootline, which use the
\newinsert\margin \dimen\margin=\maxdimen
% Main part of page, including any footnotes
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+\def\pagebody#1{\vbox to\txipageheight{\boxmaxdepth=\maxdepth #1}}
{\catcode`\@ =11
\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
% marginal hacks, juha@viisa.uucp (Juha Takala)
% \dimen0 is the vertical size of the group's box.
\dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox
% \dimen2 is how much space is left on the page (more or less).
- \dimen2 = \pageheight \advance\dimen2 by -\pagetotal
+ \dimen2 = \txipageheight \advance\dimen2 by -\pagetotal
% if the group doesn't fit on the current page, and it's a big big
% group, force a page break.
\ifdim \dimen0 > \dimen2
- \ifdim \pagetotal < \vfilllimit\pageheight
+ \ifdim \pagetotal < \vfilllimit\txipageheight
\page
\fi
\fi
\newif\ifpdf
\newif\ifpdfmakepagedest
+%
+% For LuaTeX
+%
+
+\ifx\luatexversion\thisisundefined
+\else
+ % Escape PDF strings UTF-8 to UTF-16
+ \begingroup
+ \catcode`\%=12
+ \directlua{
+ function UTF16oct(str)
+ tex.sprint(string.char(0x5c) .. '376' .. string.char(0x5c) .. '377')
+ for c in string.utfvalues(str) do
+ if c < 0x10000 then
+ tex.sprint(
+ string.format(string.char(0x5c) .. string.char(0x25) .. '03o' ..
+ string.char(0x5c) .. string.char(0x25) .. '03o',
+ (c / 256), (c % 256)))
+ else
+ c = c - 0x10000
+ local c_hi = c / 1024 + 0xd800
+ local c_lo = c % 1024 + 0xdc00
+ tex.sprint(
+ string.format(string.char(0x5c) .. string.char(0x25) .. '03o' ..
+ string.char(0x5c) .. string.char(0x25) .. '03o' ..
+ string.char(0x5c) .. string.char(0x25) .. '03o' ..
+ string.char(0x5c) .. string.char(0x25) .. '03o',
+ (c_hi / 256), (c_hi % 256),
+ (c_lo / 256), (c_lo % 256)))
+ end
+ end
+ end
+ }
+ \endgroup
+ \def\pdfescapestring#1{\directlua{UTF16oct('\luaescapestring{#1}')}}
+ \ifnum\luatexversion>84
+ % For LuaTeX >= 0.85
+ \def\pdfdest{\pdfextension dest}
+ \let\pdfoutput\outputmode
+ \def\pdfliteral{\pdfextension literal}
+ \def\pdfcatalog{\pdfextension catalog}
+ \def\pdftexversion{\numexpr\pdffeedback version\relax}
+ \let\pdfximage\saveimageresource
+ \let\pdfrefximage\useimageresource
+ \let\pdflastximage\lastsavedimageresourceindex
+ \def\pdfendlink{\pdfextension endlink\relax}
+ \def\pdfoutline{\pdfextension outline}
+ \def\pdfstartlink{\pdfextension startlink}
+ \def\pdffontattr{\pdfextension fontattr}
+ \def\pdfobj{\pdfextension obj}
+ \def\pdflastobj{\numexpr\pdffeedback lastobj\relax}
+ \let\pdfpagewidth\pagewidth
+ \let\pdfpageheight\pageheight
+ \edef\pdfhorigin{\pdfvariable horigin}
+ \edef\pdfvorigin{\pdfvariable vorigin}
+ \fi
+\fi
+
% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
% can be set). So we test for \relax and 0 as well as being undefined.
\ifx\pdfoutput\thisisundefined
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
% seem worth the trouble, since most documents are normally structured.
- \edef\pdfoutlinedest{#3}%
- \ifx\pdfoutlinedest\empty
- \def\pdfoutlinedest{#4}%
- \else
- \txiescapepdf\pdfoutlinedest
- \fi
- %
- % Also escape PDF chars in the display string.
- \edef\pdfoutlinetext{#1}%
- \txiescapepdf\pdfoutlinetext
- %
- \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+ {
+ \ifx\luatexversion\thisisundefined \else
+ \turnoffactive % LuaTeX can use Unicode strings for PDF
+ \fi
+ \edef\pdfoutlinedest{#3}%
+ \ifx\pdfoutlinedest\empty
+ \def\pdfoutlinedest{#4}%
+ \else
+ \txiescapepdf\pdfoutlinedest
+ \fi
+ %
+ % Also escape PDF chars in the display string.
+ \edef\pdfoutlinetext{#1}%
+ \txiescapepdf\pdfoutlinetext
+ %
+ \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+ }
}
%
\def\pdfmakeoutlines{%
\fi % \ifx\pdfoutput
%
-% PDF outline support for XeTeX
+% For XeTeX
%
+\newif\iftxiuseunicodedestname
\ifx\XeTeXrevision\thisisundefined
\else
+ %
+ % XeTeX version check
+ %
+ \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99995}>-1
+ % XeTeX 0.99995+ contains xdvipdfmx 20160307+.
+ % It can handle Unicode destination name for PDF.
+ \txiuseunicodedestnametrue
+ \else
+ % XeTeX < 0.99995 can not handle Unicode destination name for PDF
+ % because xdvipdfmx 20150315 has UTF-16 convert issue.
+ % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
+ \txiuseunicodedestnamefalse
+ \fi
+ %
+ % PDF outline support
+ %
\pdfmakepagedesttrue \relax
% Emulate the primitive of pdfTeX
\def\pdfdest name#1 xyz{%
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
\indexnofonts
+ \iftxiuseunicodedestname
+ \def\pdfdestname{#1}% Pass through Unicode characters.
+ \else
+ \edef\pdfdestname{#1}% Replace Unicode characters to ASCII.
+ \fi
+ \turnoffactive
\makevalueexpandable
- % In the case of XeTeX, xdvipdfmx converts strings to UTF-16.
- % Therefore \txiescapepdf is not necessary.
- \safewhatsit{\pdfdest name{#1} xyz}%
+ \txiescapepdf\pdfdestname
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
%
\def\dopdfoutline#1#2#3#4{%
- \edef\pdfoutlinedest{#3}%
+ \iftxiuseunicodedestname
+ \def\pdfoutlinedest{#3}% Pass through Unicode characters.
+ \else
+ \edef\pdfoutlinedest{#3}% Replace Unicode characters to ASCII.
+ \fi
\ifx\pdfoutlinedest\empty
\def\pdfoutlinedest{#4}%
\fi
{
\turnoffactive
- % In the case of XeTeX, xdvipdfmx converts strings to UTF-16.
- % Therefore \txiescapepdf is not necessary.
- \special{pdf:out [-] #2 << /Title (#1) /A << /S /GoTo /D (name\pdfoutlinedest) >> >> }%
+ \txiescapepdf\pdfoutlinedest
+ \edef\pdfoutlinetext{#1}%
+ \txiescapepdf\pdfoutlinetext
+ %
+ \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A
+ << /S /GoTo /D (name\pdfoutlinedest) >> >> }%
}
}
%
]
\special{pdf:docview << /PageMode /UseOutlines >> }
- \openin 1 uptex.tex % upTeX has UTF8-UTF16 cmap
- \ifeof 1
- % upTeX does not exist. To use UTF8-UCS2 cmap.
- % In this case, non-BMP characters (over U+FFFF) can not be used.
- \special{pdf:tounicode UTF8-UCS2}
- \else
- % upTeX exists. To use UTF8-UTF16 cmap.
- % Non-BMP characters (over U+FFFF) can be used.
- \special{pdf:tounicode UTF8-UTF16}
- \fi
-\fi
-
+ % ``\special{pdf:tounicode ...}'' is not necessary
+ % because xdvipdfmx converts strings from UTF-8 to UTF-16 without it.
+ % However, due to UTF-16 convert issue of xdvipdfmx 20150315,
+ % ``\special{pdf:dest ...}'' can not handle non-ASCII strings.
+ % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
%
-% @image support for XeTeX
+ \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+ \ifx\PP\D\let\nextsp\relax
+ \else\let\nextsp\skipspaces
+ \addtokens{\filename}{\PP}%
+ \advance\filenamelength by 1
+ \fi
+ \nextsp}
+ \def\getfilename#1{%
+ \filenamelength=0
+ % If we don't expand the argument now, \skipspaces will get
+ % snagged on things like "@value{foo}".
+ \edef\temp{#1}%
+ \expandafter\skipspaces\temp|\relax
+ }
+ % make a live url in pdf output.
+ \def\pdfurl#1{%
+ \begingroup
+ % it seems we really need yet another set of dummies; have not
+ % tried to figure out what each command should do in the context
+ % of @url. for now, just make @/ a no-op, that's the only one
+ % people have actually reported a problem with.
+ %
+ \normalturnoffactive
+ \def\@{@}%
+ \let\/=\empty
+ \makevalueexpandable
+ % do we want to go so far as to use \indexnofonts instead of just
+ % special-casing \var here?
+ \def\var##1{##1}%
+ %
+ \leavevmode\setcolor{\urlcolor}%
+ \special{pdf:bann << /Border [0 0 0]
+ /Subtype /Link /A << /S /URI /URI (#1) >> >>}%
+ \endgroup}
+ \def\endlink{\setcolor{\maincolor}\special{pdf:eann}}
+ \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+ \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+ \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+ \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+ \def\maketoks{%
+ \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+ \ifx\first0\adn0
+ \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+ \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+ \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+ \else
+ \ifnum0=\countA\else\makelink\fi
+ \ifx\first.\let\next=\done\else
+ \let\next=\maketoks
+ \addtokens{\toksB}{\the\toksD}
+ \ifx\first,\addtokens{\toksB}{\space}\fi
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \next}
+ \def\makelink{\addtokens{\toksB}%
+ {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+ \def\pdflink#1{%
+ \special{pdf:bann << /Border [0 0 0]
+ /Type /Annot /Subtype /Link /A << /S /GoTo /D (name#1) >> >>}%
+ \setcolor{\linkcolor}#1\endlink}
+ \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
%
-\newif\ifxeteximgpdf
-\ifx\XeTeXrevision\thisisundefined
-\else
+ %
+ % @image support
%
% #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
\def\doxeteximage#1#2#3{%
% someone has a scalable image, presumably better to use that than a
% bitmap.
\let\xeteximgext=\empty
- \xeteximgpdffalse
\begingroup
\openin 1 #1.pdf \ifeof 1
\openin 1 #1.PDF \ifeof 1
\fi
\else \gdef\xeteximgext{png}%
\fi
- \else \gdef\xeteximgext{PDF} \global\xeteximgpdftrue%
+ \else \gdef\xeteximgext{PDF}%
\fi
- \else \gdef\xeteximgext{pdf} \global\xeteximgpdftrue%
+ \else \gdef\xeteximgext{pdf}%
\fi
\closein 1
\endgroup
%
- \ifxeteximgpdf
+ \def\xetexpdfext{pdf}%
+ \ifx\xeteximgext\xetexpdfext
\XeTeXpdffile "#1".\xeteximgext ""
\else
- \XeTeXpicfile "#1".\xeteximgext ""
+ \def\xetexpdfext{PDF}%
+ \ifx\xeteximgext\xetexpdfext
+ \XeTeXpdffile "#1".\xeteximgext ""
+ \else
+ \XeTeXpicfile "#1".\xeteximgext ""
+ \fi
\fi
\ifdim \wd0 >0pt width \xeteximagewidth \fi
\ifdim \wd2 >0pt height \xeteximageheight \fi \relax
\setbox0 = \hbox{\ignorespaces #2}% look for second arg
\ifdim\wd0 > 0pt
\ifpdf
+ % For pdfTeX and LuaTeX
\ifurefurlonlylink
% PDF plus option to not display url, show just arg
\unhbox0
\unhbox0\ (\urefcode{#1})%
\fi
\else
- \unhbox0\ (\urefcode{#1})% DVI, always show arg and url
+ \ifx\XeTeXrevision\thisisundefined
+ \unhbox0\ (\urefcode{#1})% DVI, always show arg and url
+ \else
+ % For XeTeX
+ \ifurefurlonlylink
+ % PDF plus option to not display url, show just arg
+ \unhbox0
+ \else
+ % PDF, normally display both arg and url for consistency,
+ % visibility, if the pdf is eventually used to print, etc.
+ \unhbox0\ (\urefcode{#1})%
+ \fi
+ \fi
\fi
\else
\urefcode{#1}% only url given, so show it
\endlink
\endgroup}
\else
- \let\email=\uref
+ \ifx\XeTeXrevision\thisisundefined
+ \let\email=\uref
+ \else
+ \def\email#1{\doemail#1,,\finish}
+ \def\doemail#1,#2,#3\finish{\begingroup
+ \unsepspaces
+ \pdfurl{mailto:#1}%
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+ \endlink
+ \endgroup}
+ \fi
\fi
% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
\newif\ifseenauthor
\newif\iffinishedtitlepage
-% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
-%
-\newif\ifsetcontentsaftertitlepage
- \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
-\newif\ifsetshortcontentsaftertitlepage
- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+% @setcontentsaftertitlepage used to do an implicit @contents or
+% @shortcontents after @end titlepage, but it is now obsolete.
+\def\setcontentsaftertitlepage{%
+ \errmessage{@setcontentsaftertitlepage has been removed as a Texinfo
+ command; move your @contents command if you want the contents
+ after the title page.}}%
+\def\setshortcontentsaftertitlepage{%
+ \errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo
+ command; move your @shortcontents and @contents commands if you
+ want the contents after the title page.}}%
\parseargdef\shorttitlepage{%
\begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
% Need this before the \...aftertitlepage checks so that if they are
% in effect the toc pages will come out with page numbers.
\HEADINGSon
- %
- % If they want short, they certainly want long too.
- \ifsetshortcontentsaftertitlepage
- \shortcontents
- \contents
- \global\let\shortcontents = \relax
- \global\let\contents = \relax
- \fi
- %
- \ifsetcontentsaftertitlepage
- \contents
- \global\let\contents = \relax
- \global\let\shortcontents = \relax
- \fi
}
\def\finishtitlepage{%
%
% Leave some space for the footline. Hopefully ok to assume
% @evenfooting will not be used by itself.
- \global\advance\pageheight by -12pt
+ \global\advance\txipageheight by -12pt
\global\advance\vsize by -12pt
}
\def\oddheadingmarks{\headingmarks{odd}{heading}}
\def\evenfootingmarks{\headingmarks{even}{footing}}
\def\oddfootingmarks{\headingmarks{odd}{footing}}
-\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+\parseargdef\everyheadingmarks{\headingmarks{even}{heading}{#1}
\headingmarks{odd}{heading}{#1} }
-\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+\parseargdef\everyfootingmarks{\headingmarks{even}{footing}{#1}
\headingmarks{odd}{footing}{#1} }
% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
\def\headingmarks#1#2#3 {%
% By default, they are off at the start of a document,
% and turned `on' after @end titlepage.
-\def\headings #1 {\csname HEADINGS#1\endcsname}
+\parseargdef\headings{\csname HEADINGS#1\endcsname}
\def\headingsoff{% non-global headings elimination
\evenheadline={\hfil}\evenfootline={\hfil}%
% preserve coloured links across page boundaries. Otherwise the marks
% would get in the way of \lastbox in \insertindexentrybox.
\else
- \hskip\skip\thinshrinkable #1%
+ \ifx\XeTeXrevision\thisisundefined
+ \hskip\skip\thinshrinkable #1%
+ \else
+ \pdfgettoks#1.%
+ \bgroup\let\domark\relax
+ \hskip\skip\thinshrinkable\the\toksA
+ \egroup
+ \fi
\fi
\fi
\egroup % end \boxA
\ifpdf
\pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
\else
- #2
+ \ifx\XeTeXrevision\thisisundefined
+ #2
+ \else
+ \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+ \fi
\fi
\par
}}
\wd0=\hsize \wd2=\hsize
\vbox{%
\vskip\doublecolumntopgap
- \hbox to\pagewidth{\box0\hfil\box2}}%
+ \hbox to\txipagewidth{\box0\hfil\box2}}%
}
% goal. When TeX sees \eject from below which follows the final
% section, it invokes the new output routine that we've set after
% \balancecolumns below; \onepageout will try to fit the two columns
- % and the final section into the vbox of \pageheight (see
+ % and the final section into the vbox of \txipageheight (see
% \pagebody), causing an overfull box.
%
% Note that glue won't work here, because glue does not exercise the
\fi
}
-\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname}
\def\CHAPPAGoff{%
\global\let\contentsalignmacro = \chappager
}
-% I don't think this chapter style is supported any more, so I'm not
-% updating it with the new noderef stuff. We'll see. --karl, 11aug03.
-%
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-%
-\def\unnchfopen #1{%
- \chapoddpage
- \vbox{\chapfonts \raggedtitlesettings #1\par}%
- \nobreak\bigskip\nobreak
-}
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-\def\centerchfopen #1{%
- \chapoddpage
- \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
- \nobreak\bigskip \nobreak
-}
-\def\CHAPFopen{%
- \global\let\chapmacro=\chfopen
- \global\let\centerchapmacro=\centerchfopen}
-
-
% Section titles. These macros combine the section number parts and
% call the generic \sectionheading to do the printing.
%
% Argument is macro body with arguments substituted
\def\scanmacro#1{%
\newlinechar`\^^M
- \def\xprocessmacroarg{\eatspaces}%
+ \def\xeatspaces{\eatspaces}%
%
% Process the macro body under the current catcode regime.
\scantokens{#1\texinfoc}\aftermacro%
%
- % The \c is to remove the \newlinechar added by \scantokens, and
+ % The \texinfoc is to remove the \newlinechar added by \scantokens, and
% can be noticed by \parsearg.
% The \aftermacro allows a \comment at the end of the macro definition
% to duplicate itself past the final \newlinechar added by \scantokens:
% Used for copying and captions
\def\scanexp#1{%
- \bgroup
- % Undo catcode changes of \startcontents and \printindex
- % When called from @insertcopying or (short)caption, we need active
- % backslash to get it printed correctly.
- % FIXME: This may not be needed.
- %\catcode`\@=0 \catcode`\\=\active \escapechar=`\@
- \edef\temp{\noexpand\scanmacro{#1}}%
- \temp
- \egroup
+ \expandafter\scanmacro\expandafter{#1}%
}
\newcount\paramno % Count of parameters
\catcode`\_=\other
\catcode`\|=\other
\catcode`\~=\other
- \ifx\declaredencoding\ascii \else \setcharscatcodeothernonglobal \fi
+ \passthroughcharstrue
}
\def\scanargctxt{% used for copying and captions, not macros.
\paramno=0\def\paramlist{}%
\let\hash\relax
% \hash is redefined to `#' later to get it into definitions
- \let\processmacroarg\relax
+ \let\xeatspaces\relax
\parsemargdefxxx#1,;,%
\ifnum\paramno<10\relax\else
\paramno0\relax
\else \let\next=\parsemargdefxxx
\advance\paramno by 1
\expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
- {\processmacroarg{\hash\the\paramno}}%
+ {\xeatspaces{\hash\the\paramno}}%
\edef\paramlist{\paramlist\hash\the\paramno,}%
\fi\next}
%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%%
-
-% Remove following spaces at the expansion stage.
-% This works because spaces are discarded before each argument when TeX is
-% getting the arguments for a macro.
-% This must not be immediately followed by a }.
-\long\def\gobblespaces#1{#1}
-
% This defines a Texinfo @macro or @rmacro, called by \parsemacbody.
% \macrobody has the body of the macro in it, with placeholders for
-% its parameters, looking like "\processmacroarg{\hash 1}".
+% its parameters, looking like "\xeatspaces{\hash 1}".
% \paramno is the number of parameters
% \paramlist is a TeX parameter text, e.g. "#1,#2,#3,"
% There are eight cases: recursive and nonrecursive macros of zero, one,
\def\defmacro{%
\let\hash=##% convert placeholders to macro parameter chars
\ifnum\paramno=1
- \def\processmacroarg{\gobblespaces}%
+ \def\xeatspaces##1{##1}%
% This removes the pair of braces around the argument. We don't
% use \eatspaces, because this can cause ends of lines to be lost
% when the argument to \eatspaces is read, leading to line-based
% commands like "@itemize" not being read correctly.
\else
- \def\processmacroarg{\xprocessmacroarg}%
- \let\xprocessmacroarg\relax
+ \let\xeatspaces\relax % suppress expansion
\fi
\ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifcase\paramno
\noexpand\braceorline
\expandafter\noexpand\csname\the\macname @@@\endcsname}%
\expandafter\xdef\csname\the\macname @@@\endcsname##1{%
- \expandafter\noexpand\csname\the\macname @@@@\endcsname{%
- \noexpand\gobblespaces##1\empty}%
- % The \empty is for \gobblespaces in case #1 is empty
- }%
- \expandafter\xdef\csname\the\macname @@@@\endcsname##1{%
- \egroup\noexpand\scanmacro{\macrobody}}%
+ \egroup
+ \noexpand\scanmacro{\macrobody}%
+ }%
\else
\ifnum\paramno<10\relax % at most 9
% See non-recursive section below for comments
\noexpand\braceorline
\expandafter\noexpand\csname\the\macname @@@\endcsname}%
\expandafter\xdef\csname\the\macname @@@\endcsname##1{%
- \expandafter\noexpand\csname\the\macname @@@@\endcsname{%
- \noexpand\gobblespaces##1\empty}%
- % The \empty is for \gobblespaces in case #1 is empty
- }%
- \expandafter\xdef\csname\the\macname @@@@\endcsname##1{%
\egroup
\noexpand\scanmacro{\macrobody}%
}%
%
% Make link in pdf output.
\ifpdf
+ % For pdfTeX and LuaTeX
{\indexnofonts
\turnoffactive
\makevalueexpandable
\fi
}%
\setcolor{\linkcolor}%
+ \else
+ \ifx\XeTeXrevision\thisisundefined
+ \else
+ % For XeTeX
+ {\indexnofonts
+ \turnoffactive
+ \makevalueexpandable
+ % This expands tokens, so do it after making catcode changes, so _
+ % etc. don't get their TeX definitions. This ignores all spaces in
+ % #4, including (wrongly) those in the middle of the filename.
+ \getfilename{#4}%
+ %
+ % This (wrongly) does not take account of leading or trailing
+ % spaces in #1, which should be ignored.
+ \iftxiuseunicodedestname
+ \def\pdfxrefdest{#1}% Pass through Unicode characters.
+ \else
+ \edef\pdfxrefdest{#1}% Replace Unicode characters to ASCII.
+ \fi
+ \ifx\pdfxrefdest\empty
+ \def\pdfxrefdest{Top}% no empty targets
+ \else
+ \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \fi
+ %
+ \leavevmode
+ \ifnum\filenamelength>0
+ % By the default settings,
+ % XeTeX (xdvipdfmx) replaces link destination names with integers.
+ % In this case, the replaced destination names of
+ % remote PDF cannot be known. In order to avoid replacement,
+ % you can use commandline option `-C 0x0010' for xdvipdfmx.
+ \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
+ << /S /GoToR /F (\the\filename.pdf) /D (name\pdfxrefdest) >> >>}%
+ \else
+ \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
+ << /S /GoTo /D (name\pdfxrefdest) >> >>}%
+ \fi
+ }%
+ \setcolor{\linkcolor}%
+ \fi
\fi
{%
% Have to otherify everything special to allow the \csname to
% now. --karl, 15jan04.
\catcode`\\=\other
%
- % Make the characters 128-255 be printing characters.
- {\setcharscatcodeothernonglobal}%
- %
% @ is our escape character in .aux files, and we need braces.
\catcode`\{=1
\catcode`\}=2
% We want to typeset this text as a normal paragraph, even if the
% footnote reference occurs in (for example) a display environment.
% So reset some parameters.
- \hsize=\pagewidth
+ \hsize=\txipagewidth
\interlinepenalty\interfootnotelinepenalty
\splittopskip\ht\strutbox % top baseline for broken footnotes
\splitmaxdepth\dp\strutbox
%
\ifx\thiscaption\empty \else
\ifx\floatident\empty \else
- \appendtomacro\captionline{: }% had ident, so need a colon between
+ \appendtomacro\captionline{: }% had ident, so need a colon between
\fi
%
% caption text.
\requireauxfile
\atdummies
%
- % since we read the caption text in the macro world, where ^^M
- % is turned into a normal character, we have to scan it back, so
- % we don't write the literal three characters "^^M" into the aux file.
- \scanexp{%
- \xdef\noexpand\gtemp{%
- \ifx\thisshortcaption\empty
- \thiscaption
- \else
- \thisshortcaption
- \fi
- }%
- }%
+ \ifx\thisshortcaption\empty
+ \def\gtemp{\thiscaption}%
+ \else
+ \def\gtemp{\thisshortcaption}%
+ \fi
\immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
- \ifx\gtemp\empty \else : \gtemp \fi}}%
+ \ifx\gtemp\empty \else : \gtemp \fi}}%
}%
\fi
\egroup % end of \vtop
%
- % place the captured inserts
- %
- % BEWARE: when the floats start floating, we have to issue warning
- % whenever an insert appears inside a float which could possibly
- % float. --kasal, 26may04
- %
\checkinserts
}
% macros containing the character definitions.
\setnonasciicharscatcode\active
%
+
+\def\gdefchar#1#2{%
+\gdef#1{%
+ \ifpassthroughchars
+ \string#1%
+ \else
+ #2%
+ \fi
+}}
+
% Latin1 (ISO-8859-1) character definitions.
\def\latonechardefs{%
- \gdef^^a0{\tie}
- \gdef^^a1{\exclamdown}
- \gdef^^a2{{\tcfont \char162}} % cent
- \gdef^^a3{\pounds}
- \gdef^^a4{{\tcfont \char164}} % currency
- \gdef^^a5{{\tcfont \char165}} % yen
- \gdef^^a6{{\tcfont \char166}} % broken bar
- \gdef^^a7{\S}
- \gdef^^a8{\"{}}
- \gdef^^a9{\copyright}
- \gdef^^aa{\ordf}
- \gdef^^ab{\guillemetleft}
- \gdef^^ac{\ensuremath\lnot}
- \gdef^^ad{\-}
- \gdef^^ae{\registeredsymbol}
- \gdef^^af{\={}}
- %
- \gdef^^b0{\textdegree}
- \gdef^^b1{$\pm$}
- \gdef^^b2{$^2$}
- \gdef^^b3{$^3$}
- \gdef^^b4{\'{}}
- \gdef^^b5{$\mu$}
- \gdef^^b6{\P}
- \gdef^^b7{\ensuremath\cdot}
- \gdef^^b8{\cedilla\ }
- \gdef^^b9{$^1$}
- \gdef^^ba{\ordm}
- \gdef^^bb{\guillemetright}
- \gdef^^bc{$1\over4$}
- \gdef^^bd{$1\over2$}
- \gdef^^be{$3\over4$}
- \gdef^^bf{\questiondown}
- %
- \gdef^^c0{\`A}
- \gdef^^c1{\'A}
- \gdef^^c2{\^A}
- \gdef^^c3{\~A}
- \gdef^^c4{\"A}
- \gdef^^c5{\ringaccent A}
- \gdef^^c6{\AE}
- \gdef^^c7{\cedilla C}
- \gdef^^c8{\`E}
- \gdef^^c9{\'E}
- \gdef^^ca{\^E}
- \gdef^^cb{\"E}
- \gdef^^cc{\`I}
- \gdef^^cd{\'I}
- \gdef^^ce{\^I}
- \gdef^^cf{\"I}
- %
- \gdef^^d0{\DH}
- \gdef^^d1{\~N}
- \gdef^^d2{\`O}
- \gdef^^d3{\'O}
- \gdef^^d4{\^O}
- \gdef^^d5{\~O}
- \gdef^^d6{\"O}
- \gdef^^d7{$\times$}
- \gdef^^d8{\O}
- \gdef^^d9{\`U}
- \gdef^^da{\'U}
- \gdef^^db{\^U}
- \gdef^^dc{\"U}
- \gdef^^dd{\'Y}
- \gdef^^de{\TH}
- \gdef^^df{\ss}
- %
- \gdef^^e0{\`a}
- \gdef^^e1{\'a}
- \gdef^^e2{\^a}
- \gdef^^e3{\~a}
- \gdef^^e4{\"a}
- \gdef^^e5{\ringaccent a}
- \gdef^^e6{\ae}
- \gdef^^e7{\cedilla c}
- \gdef^^e8{\`e}
- \gdef^^e9{\'e}
- \gdef^^ea{\^e}
- \gdef^^eb{\"e}
- \gdef^^ec{\`{\dotless i}}
- \gdef^^ed{\'{\dotless i}}
- \gdef^^ee{\^{\dotless i}}
- \gdef^^ef{\"{\dotless i}}
- %
- \gdef^^f0{\dh}
- \gdef^^f1{\~n}
- \gdef^^f2{\`o}
- \gdef^^f3{\'o}
- \gdef^^f4{\^o}
- \gdef^^f5{\~o}
- \gdef^^f6{\"o}
- \gdef^^f7{$\div$}
- \gdef^^f8{\o}
- \gdef^^f9{\`u}
- \gdef^^fa{\'u}
- \gdef^^fb{\^u}
- \gdef^^fc{\"u}
- \gdef^^fd{\'y}
- \gdef^^fe{\th}
- \gdef^^ff{\"y}
+ \gdefchar^^a0{\tie}
+ \gdefchar^^a1{\exclamdown}
+ \gdefchar^^a2{{\tcfont \char162}} % cent
+ \gdefchar^^a3{\pounds}
+ \gdefchar^^a4{{\tcfont \char164}} % currency
+ \gdefchar^^a5{{\tcfont \char165}} % yen
+ \gdefchar^^a6{{\tcfont \char166}} % broken bar
+ \gdefchar^^a7{\S}
+ \gdefchar^^a8{\"{}}
+ \gdefchar^^a9{\copyright}
+ \gdefchar^^aa{\ordf}
+ \gdefchar^^ab{\guillemetleft}
+ \gdefchar^^ac{\ensuremath\lnot}
+ \gdefchar^^ad{\-}
+ \gdefchar^^ae{\registeredsymbol}
+ \gdefchar^^af{\={}}
+ %
+ \gdefchar^^b0{\textdegree}
+ \gdefchar^^b1{$\pm$}
+ \gdefchar^^b2{$^2$}
+ \gdefchar^^b3{$^3$}
+ \gdefchar^^b4{\'{}}
+ \gdefchar^^b5{$\mu$}
+ \gdefchar^^b6{\P}
+ \gdefchar^^b7{\ensuremath\cdot}
+ \gdefchar^^b8{\cedilla\ }
+ \gdefchar^^b9{$^1$}
+ \gdefchar^^ba{\ordm}
+ \gdefchar^^bb{\guillemetright}
+ \gdefchar^^bc{$1\over4$}
+ \gdefchar^^bd{$1\over2$}
+ \gdefchar^^be{$3\over4$}
+ \gdefchar^^bf{\questiondown}
+ %
+ \gdefchar^^c0{\`A}
+ \gdefchar^^c1{\'A}
+ \gdefchar^^c2{\^A}
+ \gdefchar^^c3{\~A}
+ \gdefchar^^c4{\"A}
+ \gdefchar^^c5{\ringaccent A}
+ \gdefchar^^c6{\AE}
+ \gdefchar^^c7{\cedilla C}
+ \gdefchar^^c8{\`E}
+ \gdefchar^^c9{\'E}
+ \gdefchar^^ca{\^E}
+ \gdefchar^^cb{\"E}
+ \gdefchar^^cc{\`I}
+ \gdefchar^^cd{\'I}
+ \gdefchar^^ce{\^I}
+ \gdefchar^^cf{\"I}
+ %
+ \gdefchar^^d0{\DH}
+ \gdefchar^^d1{\~N}
+ \gdefchar^^d2{\`O}
+ \gdefchar^^d3{\'O}
+ \gdefchar^^d4{\^O}
+ \gdefchar^^d5{\~O}
+ \gdefchar^^d6{\"O}
+ \gdefchar^^d7{$\times$}
+ \gdefchar^^d8{\O}
+ \gdefchar^^d9{\`U}
+ \gdefchar^^da{\'U}
+ \gdefchar^^db{\^U}
+ \gdefchar^^dc{\"U}
+ \gdefchar^^dd{\'Y}
+ \gdefchar^^de{\TH}
+ \gdefchar^^df{\ss}
+ %
+ \gdefchar^^e0{\`a}
+ \gdefchar^^e1{\'a}
+ \gdefchar^^e2{\^a}
+ \gdefchar^^e3{\~a}
+ \gdefchar^^e4{\"a}
+ \gdefchar^^e5{\ringaccent a}
+ \gdefchar^^e6{\ae}
+ \gdefchar^^e7{\cedilla c}
+ \gdefchar^^e8{\`e}
+ \gdefchar^^e9{\'e}
+ \gdefchar^^ea{\^e}
+ \gdefchar^^eb{\"e}
+ \gdefchar^^ec{\`{\dotless i}}
+ \gdefchar^^ed{\'{\dotless i}}
+ \gdefchar^^ee{\^{\dotless i}}
+ \gdefchar^^ef{\"{\dotless i}}
+ %
+ \gdefchar^^f0{\dh}
+ \gdefchar^^f1{\~n}
+ \gdefchar^^f2{\`o}
+ \gdefchar^^f3{\'o}
+ \gdefchar^^f4{\^o}
+ \gdefchar^^f5{\~o}
+ \gdefchar^^f6{\"o}
+ \gdefchar^^f7{$\div$}
+ \gdefchar^^f8{\o}
+ \gdefchar^^f9{\`u}
+ \gdefchar^^fa{\'u}
+ \gdefchar^^fb{\^u}
+ \gdefchar^^fc{\"u}
+ \gdefchar^^fd{\'y}
+ \gdefchar^^fe{\th}
+ \gdefchar^^ff{\"y}
}
% Latin9 (ISO-8859-15) encoding character definitions.
% Encoding is almost identical to Latin1.
\latonechardefs
%
- \gdef^^a4{\euro}
- \gdef^^a6{\v S}
- \gdef^^a8{\v s}
- \gdef^^b4{\v Z}
- \gdef^^b8{\v z}
- \gdef^^bc{\OE}
- \gdef^^bd{\oe}
- \gdef^^be{\"Y}
+ \gdefchar^^a4{\euro}
+ \gdefchar^^a6{\v S}
+ \gdefchar^^a8{\v s}
+ \gdefchar^^b4{\v Z}
+ \gdefchar^^b8{\v z}
+ \gdefchar^^bc{\OE}
+ \gdefchar^^bd{\oe}
+ \gdefchar^^be{\"Y}
}
% Latin2 (ISO-8859-2) character definitions.
\def\lattwochardefs{%
- \gdef^^a0{\tie}
- \gdef^^a1{\ogonek{A}}
- \gdef^^a2{\u{}}
- \gdef^^a3{\L}
- \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
- \gdef^^a5{\v L}
- \gdef^^a6{\'S}
- \gdef^^a7{\S}
- \gdef^^a8{\"{}}
- \gdef^^a9{\v S}
- \gdef^^aa{\cedilla S}
- \gdef^^ab{\v T}
- \gdef^^ac{\'Z}
- \gdef^^ad{\-}
- \gdef^^ae{\v Z}
- \gdef^^af{\dotaccent Z}
- %
- \gdef^^b0{\textdegree}
- \gdef^^b1{\ogonek{a}}
- \gdef^^b2{\ogonek{ }}
- \gdef^^b3{\l}
- \gdef^^b4{\'{}}
- \gdef^^b5{\v l}
- \gdef^^b6{\'s}
- \gdef^^b7{\v{}}
- \gdef^^b8{\cedilla\ }
- \gdef^^b9{\v s}
- \gdef^^ba{\cedilla s}
- \gdef^^bb{\v t}
- \gdef^^bc{\'z}
- \gdef^^bd{\H{}}
- \gdef^^be{\v z}
- \gdef^^bf{\dotaccent z}
- %
- \gdef^^c0{\'R}
- \gdef^^c1{\'A}
- \gdef^^c2{\^A}
- \gdef^^c3{\u A}
- \gdef^^c4{\"A}
- \gdef^^c5{\'L}
- \gdef^^c6{\'C}
- \gdef^^c7{\cedilla C}
- \gdef^^c8{\v C}
- \gdef^^c9{\'E}
- \gdef^^ca{\ogonek{E}}
- \gdef^^cb{\"E}
- \gdef^^cc{\v E}
- \gdef^^cd{\'I}
- \gdef^^ce{\^I}
- \gdef^^cf{\v D}
- %
- \gdef^^d0{\DH}
- \gdef^^d1{\'N}
- \gdef^^d2{\v N}
- \gdef^^d3{\'O}
- \gdef^^d4{\^O}
- \gdef^^d5{\H O}
- \gdef^^d6{\"O}
- \gdef^^d7{$\times$}
- \gdef^^d8{\v R}
- \gdef^^d9{\ringaccent U}
- \gdef^^da{\'U}
- \gdef^^db{\H U}
- \gdef^^dc{\"U}
- \gdef^^dd{\'Y}
- \gdef^^de{\cedilla T}
- \gdef^^df{\ss}
- %
- \gdef^^e0{\'r}
- \gdef^^e1{\'a}
- \gdef^^e2{\^a}
- \gdef^^e3{\u a}
- \gdef^^e4{\"a}
- \gdef^^e5{\'l}
- \gdef^^e6{\'c}
- \gdef^^e7{\cedilla c}
- \gdef^^e8{\v c}
- \gdef^^e9{\'e}
- \gdef^^ea{\ogonek{e}}
- \gdef^^eb{\"e}
- \gdef^^ec{\v e}
- \gdef^^ed{\'{\dotless{i}}}
- \gdef^^ee{\^{\dotless{i}}}
- \gdef^^ef{\v d}
- %
- \gdef^^f0{\dh}
- \gdef^^f1{\'n}
- \gdef^^f2{\v n}
- \gdef^^f3{\'o}
- \gdef^^f4{\^o}
- \gdef^^f5{\H o}
- \gdef^^f6{\"o}
- \gdef^^f7{$\div$}
- \gdef^^f8{\v r}
- \gdef^^f9{\ringaccent u}
- \gdef^^fa{\'u}
- \gdef^^fb{\H u}
- \gdef^^fc{\"u}
- \gdef^^fd{\'y}
- \gdef^^fe{\cedilla t}
- \gdef^^ff{\dotaccent{}}
+ \gdefchar^^a0{\tie}
+ \gdefchar^^a1{\ogonek{A}}
+ \gdefchar^^a2{\u{}}
+ \gdefchar^^a3{\L}
+ \gdefchar^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdefchar^^a5{\v L}
+ \gdefchar^^a6{\'S}
+ \gdefchar^^a7{\S}
+ \gdefchar^^a8{\"{}}
+ \gdefchar^^a9{\v S}
+ \gdefchar^^aa{\cedilla S}
+ \gdefchar^^ab{\v T}
+ \gdefchar^^ac{\'Z}
+ \gdefchar^^ad{\-}
+ \gdefchar^^ae{\v Z}
+ \gdefchar^^af{\dotaccent Z}
+ %
+ \gdefchar^^b0{\textdegree}
+ \gdefchar^^b1{\ogonek{a}}
+ \gdefchar^^b2{\ogonek{ }}
+ \gdefchar^^b3{\l}
+ \gdefchar^^b4{\'{}}
+ \gdefchar^^b5{\v l}
+ \gdefchar^^b6{\'s}
+ \gdefchar^^b7{\v{}}
+ \gdefchar^^b8{\cedilla\ }
+ \gdefchar^^b9{\v s}
+ \gdefchar^^ba{\cedilla s}
+ \gdefchar^^bb{\v t}
+ \gdefchar^^bc{\'z}
+ \gdefchar^^bd{\H{}}
+ \gdefchar^^be{\v z}
+ \gdefchar^^bf{\dotaccent z}
+ %
+ \gdefchar^^c0{\'R}
+ \gdefchar^^c1{\'A}
+ \gdefchar^^c2{\^A}
+ \gdefchar^^c3{\u A}
+ \gdefchar^^c4{\"A}
+ \gdefchar^^c5{\'L}
+ \gdefchar^^c6{\'C}
+ \gdefchar^^c7{\cedilla C}
+ \gdefchar^^c8{\v C}
+ \gdefchar^^c9{\'E}
+ \gdefchar^^ca{\ogonek{E}}
+ \gdefchar^^cb{\"E}
+ \gdefchar^^cc{\v E}
+ \gdefchar^^cd{\'I}
+ \gdefchar^^ce{\^I}
+ \gdefchar^^cf{\v D}
+ %
+ \gdefchar^^d0{\DH}
+ \gdefchar^^d1{\'N}
+ \gdefchar^^d2{\v N}
+ \gdefchar^^d3{\'O}
+ \gdefchar^^d4{\^O}
+ \gdefchar^^d5{\H O}
+ \gdefchar^^d6{\"O}
+ \gdefchar^^d7{$\times$}
+ \gdefchar^^d8{\v R}
+ \gdefchar^^d9{\ringaccent U}
+ \gdefchar^^da{\'U}
+ \gdefchar^^db{\H U}
+ \gdefchar^^dc{\"U}
+ \gdefchar^^dd{\'Y}
+ \gdefchar^^de{\cedilla T}
+ \gdefchar^^df{\ss}
+ %
+ \gdefchar^^e0{\'r}
+ \gdefchar^^e1{\'a}
+ \gdefchar^^e2{\^a}
+ \gdefchar^^e3{\u a}
+ \gdefchar^^e4{\"a}
+ \gdefchar^^e5{\'l}
+ \gdefchar^^e6{\'c}
+ \gdefchar^^e7{\cedilla c}
+ \gdefchar^^e8{\v c}
+ \gdefchar^^e9{\'e}
+ \gdefchar^^ea{\ogonek{e}}
+ \gdefchar^^eb{\"e}
+ \gdefchar^^ec{\v e}
+ \gdefchar^^ed{\'{\dotless{i}}}
+ \gdefchar^^ee{\^{\dotless{i}}}
+ \gdefchar^^ef{\v d}
+ %
+ \gdefchar^^f0{\dh}
+ \gdefchar^^f1{\'n}
+ \gdefchar^^f2{\v n}
+ \gdefchar^^f3{\'o}
+ \gdefchar^^f4{\^o}
+ \gdefchar^^f5{\H o}
+ \gdefchar^^f6{\"o}
+ \gdefchar^^f7{$\div$}
+ \gdefchar^^f8{\v r}
+ \gdefchar^^f9{\ringaccent u}
+ \gdefchar^^fa{\'u}
+ \gdefchar^^fb{\H u}
+ \gdefchar^^fc{\"u}
+ \gdefchar^^fd{\'y}
+ \gdefchar^^fe{\cedilla t}
+ \gdefchar^^ff{\dotaccent{}}
}
% UTF-8 character definitions.
\fi
}
+% Give non-ASCII bytes the active definitions for processing UTF-8 sequences
\begingroup
\catcode`\~13
+ \catcode`\$12
\catcode`\"12
+ % Loop from \countUTFx to \countUTFy, performing \UTFviiiTmp
+ % substituting ~ and $ with a character token of that value.
\def\UTFviiiLoop{%
\global\catcode\countUTFx\active
\uccode`\~\countUTFx
+ \uccode`\$\countUTFx
\uppercase\expandafter{\UTFviiiTmp}%
\advance\countUTFx by 1
\ifnum\countUTFx < \countUTFy
\expandafter\UTFviiiLoop
\fi}
+ % For bytes other than the first in a UTF-8 sequence. Not expected to
+ % be expanded except when writing to auxiliary files.
+ \countUTFx = "80
+ \countUTFy = "C2
+ \def\UTFviiiTmp{%
+ \gdef~{
+ \ifpassthroughchars $\fi}}%
+ \UTFviiiLoop
+
\countUTFx = "C2
\countUTFy = "E0
\def\UTFviiiTmp{%
- \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+ \gdef~{%
+ \ifpassthroughchars $%
+ \else\expandafter\UTFviiiTwoOctets\expandafter$\fi}}%
\UTFviiiLoop
\countUTFx = "E0
\countUTFy = "F0
\def\UTFviiiTmp{%
- \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+ \gdef~{%
+ \ifpassthroughchars $%
+ \else\expandafter\UTFviiiThreeOctets\expandafter$\fi}}%
\UTFviiiLoop
\countUTFx = "F0
\countUTFy = "F4
\def\UTFviiiTmp{%
- \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+ \gdef~{%
+ \ifpassthroughchars $%
+ \else\expandafter\UTFviiiFourOctets\expandafter$\fi
+ }}%
\UTFviiiLoop
\endgroup
\catcode`\~=13
\gdef\DeclareUnicodeCharacterUTFviii#1#2{%
\countUTFz = "#1\relax
- %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
\begingroup
\parseXMLCharref
+ %
+ % Access definitions of characters given UTF-8 sequences
\def\UTFviiiTwoOctets##1##2{%
\csname u8:##1\string ##2\endcsname}%
\def\UTFviiiThreeOctets##1##2##3{%
% define an additional control sequence for this code point.
\expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp
\endgroup}
-
+ %
+ % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp.
\gdef\parseXMLCharref{%
\ifnum\countUTFz < "A0\relax
\errhelp = \EMsimple
\uccode `#1\countUTFx
\countUTFz = \countUTFy}
+ % Used to set \UTFviiiTmp to a UTF-8 byte sequence
\gdef\parseUTFviiiB#1#2#3#4{%
\advance\countUTFz by "#10\relax
\uccode `#3\countUTFz
\unicodechardefs
}
+% Whether the active definitions of non-ASCII characters expand to
+% non-active tokens with the same character code. This is used to
+% write characters literally, instead of using active definitions for
+% printing the correct glyphs.
\newif\ifpassthroughchars
\passthroughcharsfalse
\unicodechardefs
}
-% Native Unicode (XeTeX and LuaTeX) catcode other non global definitions
-\def\nativeunicodecharscatcodeothernonglobal{%
- \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeOther
- \unicodechardefs
-}
-
-% Catcode (non-ASCII or native Unicode) are set to \other (non-global
-% assignments).
-\def\setcharscatcodeothernonglobal{%
- \iftxiusebytewiseio
- \setnonasciicharscatcodenonglobal\other
- \else
- \nativeunicodecharscatcodeothernonglobal
- \fi
-}
-
% US-ASCII character definitions.
\def\asciichardefs{% nothing need be done
\relax
}
-% Redefine the active definitions of non-ASCII characters to expand to
-% non-active tokens with the same character code.
-\def\nonasciistringdefs{%
- \setnonasciicharscatcode\active
- \def\defstringchar##1{\def##1{\string##1}}%
- %
- \defstringchar^^80\defstringchar^^81\defstringchar^^82\defstringchar^^83%
- \defstringchar^^84\defstringchar^^85\defstringchar^^86\defstringchar^^87%
- \defstringchar^^88\defstringchar^^89\defstringchar^^8a\defstringchar^^8b%
- \defstringchar^^8c\defstringchar^^8d\defstringchar^^8e\defstringchar^^8f%
- %
- \defstringchar^^90\defstringchar^^91\defstringchar^^92\defstringchar^^93%
- \defstringchar^^94\defstringchar^^95\defstringchar^^96\defstringchar^^97%
- \defstringchar^^98\defstringchar^^99\defstringchar^^9a\defstringchar^^9b%
- \defstringchar^^9c\defstringchar^^9d\defstringchar^^9e\defstringchar^^9f%
- %
- \defstringchar^^a0\defstringchar^^a1\defstringchar^^a2\defstringchar^^a3%
- \defstringchar^^a4\defstringchar^^a5\defstringchar^^a6\defstringchar^^a7%
- \defstringchar^^a8\defstringchar^^a9\defstringchar^^aa\defstringchar^^ab%
- \defstringchar^^ac\defstringchar^^ad\defstringchar^^ae\defstringchar^^af%
- %
- \defstringchar^^b0\defstringchar^^b1\defstringchar^^b2\defstringchar^^b3%
- \defstringchar^^b4\defstringchar^^b5\defstringchar^^b6\defstringchar^^b7%
- \defstringchar^^b8\defstringchar^^b9\defstringchar^^ba\defstringchar^^bb%
- \defstringchar^^bc\defstringchar^^bd\defstringchar^^be\defstringchar^^bf%
- %
- \defstringchar^^c0\defstringchar^^c1\defstringchar^^c2\defstringchar^^c3%
- \defstringchar^^c4\defstringchar^^c5\defstringchar^^c6\defstringchar^^c7%
- \defstringchar^^c8\defstringchar^^c9\defstringchar^^ca\defstringchar^^cb%
- \defstringchar^^cc\defstringchar^^cd\defstringchar^^ce\defstringchar^^cf%
- %
- \defstringchar^^d0\defstringchar^^d1\defstringchar^^d2\defstringchar^^d3%
- \defstringchar^^d4\defstringchar^^d5\defstringchar^^d6\defstringchar^^d7%
- \defstringchar^^d8\defstringchar^^d9\defstringchar^^da\defstringchar^^db%
- \defstringchar^^dc\defstringchar^^dd\defstringchar^^de\defstringchar^^df%
- %
- \defstringchar^^e0\defstringchar^^e1\defstringchar^^e2\defstringchar^^e3%
- \defstringchar^^e4\defstringchar^^e5\defstringchar^^e6\defstringchar^^e7%
- \defstringchar^^e8\defstringchar^^e9\defstringchar^^ea\defstringchar^^eb%
- \defstringchar^^ec\defstringchar^^ed\defstringchar^^ee\defstringchar^^ef%
- %
- \defstringchar^^f0\defstringchar^^f1\defstringchar^^f2\defstringchar^^f3%
- \defstringchar^^f4\defstringchar^^f5\defstringchar^^f6\defstringchar^^f7%
- \defstringchar^^f8\defstringchar^^f9\defstringchar^^fa\defstringchar^^fb%
- \defstringchar^^fc\defstringchar^^fd\defstringchar^^fe\defstringchar^^ff%
-}
-
-% Write characters literally, instead of using active definitions for
-% printing the correct glyphs.
-\def\passthroughcharacters{%
- \iftxiusebytewiseio
- \nonasciistringdefs
- \else
- \passthroughcharstrue
- \fi
-}
-
-
% define all the unicode characters we know about, for the sake of @U.
\iftxinativeunicodecapable
\nativeunicodechardefsatu
\advance\vsize by \topskip
\outervsize = \vsize
\advance\outervsize by 2\topandbottommargin
- \pageheight = \vsize
+ \txipageheight = \vsize
%
\hsize = #2\relax
\outerhsize = \hsize
\advance\outerhsize by 0.5in
- \pagewidth = \hsize
+ \txipagewidth = \hsize
%
\normaloffset = #4\relax
\bindingoffset = #5\relax
% whatever layout pdftex was dumped with.
\pdfhorigin = 1 true in
\pdfvorigin = 1 true in
+ \else
+ \ifx\XeTeXrevision\thisisundefined
+ \else
+ \pdfpageheight #7\relax
+ \pdfpagewidth #8\relax
+ % XeTeX does not have \pdfhorigin and \pdfvorigin.
+ \fi
\fi
%
\setleading{\textleading}
%
{@catcode`- = @active
@gdef@normalturnoffactive{%
- @passthroughcharacters
+ @passthroughcharstrue
@let-=@normaldash
@let"=@normaldoublequote
@let$=@normaldollar %$ font-lock fix
@global@let\ = @eatinput%
@catcode`@^^M=13%
@def@c{@fixbackslash@c}%
+ % Definition for the newline at the end of this file.
@def ^^M{@let^^M@secondlinenl}%
- @gdef @secondlinenl{@let^^M@thirdlinenl}%
- @gdef @thirdlinenl{@fixbackslash}%
+ % Definition for a newline in the main Texinfo file.
+ @gdef @secondlinenl{@fixbackslash}%
}}
{@catcode`@^=7 @catcode`@^^M=13%