]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' of ssh://kainhofer@git.sv.gnu.org/srv/git/lilypond into dev...
authorReinhold Kainhofer <reinhold@kainhofer.com>
Tue, 25 Mar 2008 17:36:05 +0000 (18:36 +0100)
committerReinhold Kainhofer <reinhold@kainhofer.com>
Tue, 25 Mar 2008 17:36:05 +0000 (18:36 +0100)
Documentation/lilypond.css [new file with mode: 0644]
buildscripts/langdefs.py
config.make.in
configure.in
lilypond-texi2html.init [new file with mode: 0644]
make/doclang-rules.make
make/doclang-vars.make
stepmake/stepmake/texinfo-rules.make
stepmake/stepmake/texinfo-vars.make

diff --git a/Documentation/lilypond.css b/Documentation/lilypond.css
new file mode 100644 (file)
index 0000000..93df577
--- /dev/null
@@ -0,0 +1,164 @@
+/***********************************************************/
+/*                  PAGE-WIDE SETTINGS                     */
+/***********************************************************/
+body {
+  margin-right: auto;
+  margin-left: auto;
+}
+
+/***********************************************************/
+/*                      HEADERS                            */
+/***********************************************************/
+h2 {
+  font-size: x-large;
+  color: #1d7b85;
+}
+.unnumberedsubsubsec {
+  font-size: large;
+  color: #1d7b85;
+}
+.subsubheading {
+  font-size: large;
+  color: #3b220d;
+}
+
+/***********************************************************/
+/*                       LINKS                             */
+/***********************************************************/
+a {
+  color: #344242;
+}
+a:visited {
+  color: #666666;
+}
+a:active {
+  color: #00cccc;
+}
+a:hover {
+  color: #1d7b85;
+  text-decoration:underline;
+}
+
+/***********************************************************/
+/*                  BLOCK FORMATTING                       */
+/***********************************************************/
+blockquote {
+  border: 1px solid #cccccc;
+  padding: 3px;
+  width: 40em;
+}
+.verbatim {
+  font-family: "Courier New",Courier,monospace;
+}
+hr {
+  border:  none;
+  height: 1px;
+  color: #666666;
+  background-color: #666666;
+}
+table.cartouche {
+  border: 2px dotted #cccccc;
+  margin-left: auto;
+  margin-right: auto;
+  width: 85%;
+}
+table.cartouche td {
+  border: none;
+}
+
+/***********************************************************/
+/*                        TOC                              */
+/***********************************************************/
+.contents {
+  border: 1px dashed #339999;
+  margin: 3px 2em;
+  list-style-type: square;
+  padding-right: 1em;
+  width: 40em;
+  background-color: #fcfff9;
+}
+
+
+/***********************************************************/
+/*                    TOC SIDEBAR                          */
+/***********************************************************/
+body {
+  padding-left: 27%; /* To create space for the sidebar! */
+}
+div#tocframe {
+  position:      fixed;
+  top:           0;
+  left:          0;
+  margin:        0em;
+  padding:       5px;
+  width:         25%;
+  height:        100%;
+  overflow:      auto;
+  background-color: #FFFACD;
+  z-index:100;
+  list-style-type: none;
+}
+
+#tocframe .contents {
+  width: 100%;
+  border: none;
+  margin: 0em;
+  background-color: transparent;
+  list-style-type: none;
+}
+
+#tocframe ul.toc {
+  padding-left: 0px;
+  margin-left: 0px;
+}
+#tocframe ul.toc li {
+ padding-left: 0px;
+  margin-left: 0px;
+  list-style-type: none;
+}
+#tocframe ul.toc > li {
+  font-size: 12px;
+}
+#tocframe ul.toc li li {
+  padding-left: 15px;
+}
+li.toc_current {
+  font-weight: bold;
+  font-style: italic;
+}
+
+li.toc_current ul {
+  font-weight: normal;
+  font-style: normal;
+  background: transparent;
+}
+
+
+
+
+/***********************************************************/
+/*                     NAVIGATION                          */
+/***********************************************************/
+.nav_table {
+  width:  98%;
+  background-color: #CCCCCC;
+  border: 0;
+  left: auto;
+  right: auto;
+  font-size: 10pt;
+}
+
+
+
+
+
+
+/***********************************************************/
+/*               OVERRIDES FOR PRINTING...                 */
+/***********************************************************/
+@media print {
+  /* Hide the sidebar: */
+  body { padding-left: 0; }
+  #tocframe { display: none; }
+  .nav_table { display: none; }
+}
\ No newline at end of file
index 4c9a0a7d8b61dffc980275254756b34ce03713e4..13415d0e47cb3f742841a5a2e3d75a2a9307474d 100644 (file)
@@ -34,7 +34,7 @@ class LanguageDef:
 
 site = LanguageDef ('en', 'English', webext='')
 
-html_page_body = re.compile ('</?body>', re.M | re.I)
+html_page_body = re.compile ('</?body.*>', re.M | re.I)
 french_html_typo_rules = ((' :', '&nbsp;:'),
                           (' ;', '&nbsp;;'),
                           (' ?', '&thinsp;?'),
index 4d714c3d3f235e62ac8b87bb9635df4f0ce5f808..da0123311f405c6f5d2a378eadd52a50398de12f 100644 (file)
@@ -126,6 +126,7 @@ LINK_GXX_STATICALLY = @LINK_GXX_STATICALLY@
 LN = @LN@
 LN_S = @LN_S@
 MAKEINFO_PROGRAM = @MAKEINFO@
+TEXI2HTML_PROGRAM = @TEXI2HTML@
 METAFONT = @METAFONT@ -progname=mf
 MFMODE = @MFMODE@
 MSGFMT = @MSGFMT@
index b15a0b0de07d26044bd63cf1c294ced47a96dbc7..b9e427a66e88ef0cfc37ca1038890e20b73b9cc7 100644 (file)
@@ -128,7 +128,8 @@ AC_MSG_RESULT(Must have patched GUILE rational support. See INSTALL.txt))
 CPPFLAGS="$save_CPPFLAGS"
 
 
-STEPMAKE_MAKEINFO(REQUIRED, 4.11)
+# We check for makeinfo below, too. Really duplicate that check?
+## STEPMAKE_MAKEINFO(REQUIRED, 4.11)
 STEPMAKE_PYTHON_DEVEL(REQUIRED)
 
 STEPMAKE_PATH_PROG(GHOSTSCRIPT, gs, OPTIONAL, 8.15)
@@ -176,6 +177,7 @@ STEPMAKE_GUILE(OPTIONAL)
 STEPMAKE_PERL(OPTIONAL)
 
 STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 4.11)
+STEPMAKE_PROGS(TEXI2HTML, texi2html, REQUIRED, 1.79)
 
 AC_DEFINE_UNQUOTED(FLOWER_VERSION, "${FULL_FLOWER_VERSION}")
 
diff --git a/lilypond-texi2html.init b/lilypond-texi2html.init
new file mode 100644 (file)
index 0000000..d826262
--- /dev/null
@@ -0,0 +1,510 @@
+#!/usr/bin/env perl
+
+# {
+package Texi2HTML::Config;
+
+my $lastfilename;
+my $docnr = 0;
+my $page_toc_depth = 2;
+
+use Data::Dumper;
+$Data::Dumper::Maxdepth = 2;
+
+sub print_element_info($) 
+{
+  my $element = shift;
+  print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
+  print "Element: $element\n";
+  print Dumper($element);
+}
+
+
+# This function makes sure that files are only generated for numbered sections,
+# but not for unnumbered ones. It is called after texi2html has done its own
+# splitting and simply returns the filename for the node given as first argument
+# Nodes with the same filename will be printed out to the same filename, so 
+# this really all we need. Also, make sure that the file names for sections
+# are derived from the section title. We also might want to name the anchors
+# according to node titles, which works by simply overriding the id element of 
+# the $element hash.
+sub split_at_numbered_sections($$$)
+{
+  my $element = shift;
+  my $type = shift;
+  my $docu_name = shift;
+  my $docu_ext = $Texi2HTML::Config::EXTENSION;
+  if ( $Texi2HTML::THISDOC{'current_lang'} ) {
+    $docu_ext = $Texi2HTML::THISDOC{'current_lang'} . "." . $docu_ext;
+  }
+
+#   if ($$element{number} eq "1.1") {
+#     print_element_info ($element);
+#   }
+
+  # TOC, footer, about etc. are called with undefined $element and $type == "toc"|"stoc"|"foot"|"about"
+  if ($type eq "toc" or $type eq "stoc" or $type eq "foot" or $type eq "about") {
+    my $filename = "lilypond_$type";
+    $filename .= ".$docu_ext" if (defined($docu_ext));
+#     print "Standard file of type $type\n";
+    return $filename;
+  } else {
+    # derive the name of the anchor (i.e. the part after # in the links!), 
+    # don't use texi2html's SECx.x default!
+    my $anchor = main::remove_texi($$element{texi});
+    my $trof = $$element{translationof};
+    if ($trof) {
+      print "We have a translationof: $trof\n";
+      print Dumper($element);
+#       $anchor = $trof;
+    }
+    $anchor =~ tr/\ ?:'/-/d;
+    $$element{id} = $anchor;
+    # Numbered sections will get a filename Section_1.1.2, unnumbered sections will use 
+    # the file name of the previous numbered section:
+    if ($$element{number}) {
+      my $filename = $anchor;
+      $filename .= ".$docu_ext" if (defined($docu_ext));
+      $docnr += 1;
+      $$element{doc_nr} = $docnr;
+      $lastfilename = $filename;
+      return $filename;
+    } else {
+      $$element{doc_nr} = $docnr;
+      return $lastfilename;
+    }
+  }
+
+  return;
+}
+
+
+# Print a link in a menu. Since we split at sections, but still want access keys, 
+# we have to duplicate this function here :-((((
+sub lilypond_menu_link($$$$$$)
+{
+    my $entry = shift;
+    my $state = shift;
+    my $href = shift;
+    my $node = shift;
+    my $name = shift;
+    my $ending = shift;
+    if (($entry eq '') or $NODE_NAME_IN_MENU or $state->{'preformatted'})
+    {
+        $name .= ':' if ($name ne '');
+        $entry = "$MENU_SYMBOL$name$node";
+    }
+    $menu_entry_index++;
+    my $accesskey;
+    $accesskey = "accesskey=\"$menu_entry_index\"" if ($USE_ACCESSKEY and ($menu_entry_index < 10));
+    $entry = &$anchor ('', $href, $entry, $accesskey) if (defined($href));
+    return $entry if ($SIMPLE_MENU); 
+    if ($state->{'preformatted'})
+    {
+        return '<tr><td>' . main::do_preformatted($entry . $ending, $state);
+    }
+    return "<tr><td align=\"left\" valign=\"top\">$entry</td><td>&nbsp;&nbsp;</td>";
+}
+
+
+# The default formatting of external refs returns e.g. 
+# "(lilypond-internals)Timing_translator", while we simply want "Timing_translator".
+# Solution: Remove all (...) from the file_and_node argument before calling
+# the default handler!
+sub lilypond_external_ref($$$$$$)
+{
+  my $type = shift;
+  my $section = shift;
+  my $book = shift;
+  my $file_node = shift;
+  my $href = shift;
+  my $cross_ref = shift;
+
+  $file_node =~ s/\(.*\)//;
+  return t2h_default_external_ref($type, $section, $book, $file_node, $href, $cross_ref);
+}
+
+
+# recursively generate the TOC entries for the element and its children (which
+# are only shown up to maxlevel. All ancestors of the current element are also 
+# shown with their immediate children, irrespective of their level.
+sub generate_ly_toc_entries($$$)
+{
+  my $element = shift;
+  my $element_path = shift;
+  my $maxlevel = shift;
+  # Skip undefined sections, plus all sections generated by index splitting
+  return() if (not defined($element) or exists($element->{'index_page'}));
+  my @result = ();
+  my $level = $element->{'toc_level'};
+  my $is_parent_of_current = $element_path->{$element->{'number'}};
+  my $print_children = ( ($level < $maxlevel) or $is_parent_of_current );
+  my $ind = '  ' x $level;
+  my $this_css_class = $is_parent_of_current ? " class=\"toc_current\"" : "";
+
+  my $entry = "$ind<li$this_css_class>" . &$anchor ($element->{'tocid'}, "$element->{'file'}#$element->{'id'}",$element->{'text'});
+
+  my $children = $element->{'section_childs'};
+  if ( $print_children and defined($children) and (ref($children) eq "ARRAY") ) {
+    push (@result, $entry);
+    my @child_result = ();
+    foreach (@$children) {
+      push (@child_result, generate_ly_toc_entries($_, $element_path, $maxlevel));
+    }
+    # if no child nodes were generated, e.g. for the index, where expanded pages
+    # are ignored, don't generate a list at all...
+    if (@child_result) {
+      push (@result, "$ind<ul$NO_BULLET_LIST_ATTRIBUTE>");
+      push (@result, @child_result);
+      push (@result, "$ind</ul></li>\n");
+    }
+  } else {
+    push (@result, $entry . "</li>\n");
+  }
+  return @result;
+}
+
+
+# Print a customized TOC, containing only the first two levels plus the whole
+# path to the current page
+sub lilypond_generate_page_toc_body($)
+{
+    my $element = shift;
+    my $current_element = $element;
+    my %parentelements;
+    $parentelements{$element->{'number'}} = 1;
+    # Find the path to the current element
+    while ( defined($current_element->{'sectionup'}) and 
+           ($current_element->{'sectionup'} ne $current_element) )
+    {
+      $parentelements{$current_element->{'sectionup'}->{'number'}} = 1
+              if ($current_element->{'sectionup'}->{'number'} ne '');
+      $current_element = $current_element->{'sectionup'};
+    }
+    return () if not defined($current_element);
+    # Create the toc entries recursively
+    my @toc_entries = ("<div class=\"contents\">", "<ul$NO_BULLET_LIST_ATTRIBUTE>");
+    my $children = $current_element->{'section_childs'};
+    foreach ( @$children ) {
+      push (@toc_entries, generate_ly_toc_entries($_, \%parentelements, $page_toc_depth));
+    }
+    push (@toc_entries, "</ul>");
+    push (@toc_entries, "</div>");
+    return @toc_entries;
+}
+
+my @this_page_toc = ();
+
+sub lilypond_print_element_header
+{
+  my $fh = shift;
+  my $first_in_page = shift;
+  my $previous_is_top = shift;
+  if ($first_in_page and not @this_page_toc) {
+    if (defined($Texi2HTML::THIS_ELEMENT)) {
+      # Create the TOC for this page
+      @this_page_toc = lilypond_generate_page_toc_body($Texi2HTML::THIS_ELEMENT);
+    }
+  }
+  return T2H_DEFAULT_print_element_header( $fh, $first_in_page, $previous_is_top);
+}
+
+
+
+
+
+
+
+
+
+
+# Print out the TOC in a <div> at the end of th page, which will be formatted as a
+# sidebar mimicking a TOC frame
+sub print_lilypond_page_foot($)
+{
+  my $fh = shift;
+#   my @lines = @{$Texi2HTML::OVERVIEW};
+#   my $lines = $Texi2HTML::TOC_LINES;
+  my @lines = @this_page_toc;
+  if (not @lines) {
+    print "We have no toc lines, generate generic ones for main::element_top::\n";
+#     print Dumper( $main::element_top );
+#     print Dumper( $main::section_top );
+#     print Dumper( $main::node_top );
+#     @lines = lilypond_generate_page_toc_body( $main::element_top );
+#     @lines = lilypond_generate_page_toc_body($Texi2HTML::THIS_ELEMENT);
+    @lines = @$Texi2HTML::TOC_LINES;
+  }
+  if (@lines) {
+    print $fh "<div id=\"tocframe\">";
+    print $fh '<h4> ' . $Texi2HTML::NAME{'Contents'}  . "</h4>\n";
+    foreach my $line (@lines) {
+      print $fh $line;
+    }
+    print $fh "</div>";
+    @this_page_toc = ();
+  }
+  T2H_DEFAULT_print_page_foot($fh);
+}
+
+
+
+
+
+
+
+sub get_navigation_text
+{
+  my $button = shift;
+  my $text = $NAVIGATION_TEXT{$button};
+  if ( ($button eq 'Back') or ($button eq 'FastBack') ) {
+    $text = $text . $Texi2HTML::NODE{$button} . "&nbsp;";
+  } elsif ( ($button eq 'Forward') or ($button eq 'FastForward') ) {
+    $text = "&nbsp;" . $Texi2HTML::NODE{$button} . $text;
+  } elsif ( $button eq 'Up' ) {
+    $text = "&nbsp;Up:&nbsp;" . $Texi2HTML::NODE{$button} . "&nbsp;";
+  }
+  return $text;
+}
+
+
+# Don't automatically create left-aligned table cells for every link, but 
+# instead create a <td> only on an appropriate '(left|right|center)-aligned-cell-n'
+# button text. It's alignment as well as the colspan will be taken from the
+# name of the button. Also, add 'newline' button text to create a new table
+# row. The texts of the buttons are generated by get_navigation_text and 
+# will contain the name of the next/previous section/chapter.
+sub lilypond_print_navigation
+{
+    my $fh = shift;
+    my $buttons = shift;
+    my $vertical = shift;
+    my $spacing = 1;
+#     print $fh '<table cellpadding="', $spacing, '" cellspacing="', $spacing,
+#       "\" border=\"0\" class=\"nav_table\">\n";
+    print $fh "<table class=\"nav_table\">\n";
+
+    print $fh "<tr>" unless $vertical;
+    my $beginofline = 1;
+    foreach my $button (@$buttons)
+    {
+        print $fh qq{<tr valign="top" align="left">\n} if $vertical;
+        # Allow (left|right|center)-aligned-cell and newline as buttons!
+        if ( $button =~ /^(.*)-aligned-cell-(.*)$/ ) 
+        {
+          print $fh qq{</td>} unless $beginofline;
+          print $fh qq{<td valign="middle" align="$1" colspan="$2">};
+          $beginofline = 0;
+        } 
+        elsif ( $button eq 'newline' ) 
+        {
+          print $fh qq{</td>} unless $beginofline;
+          print $fh qq{</tr>};
+          print $fh qq{<tr>};
+          $beginofline = 1;
+
+        } 
+        elsif (ref($button) eq 'CODE')
+        {
+            &$button($fh, $vertical);
+        }
+        elsif (ref($button) eq 'SCALAR')
+        {
+            print $fh "$$button" if defined($$button);
+        }
+        elsif (ref($button) eq 'ARRAY')
+        {
+            my $text = $button->[1];
+            my $button_href = $button->[0];
+            # verify that $button_href is simple text and text is a reference
+            if (defined($button_href) and !ref($button_href) 
+               and defined($text) and (ref($text) eq 'SCALAR') and defined($$text))
+            {             # use given text
+                if ($Texi2HTML::HREF{$button_href})
+                {
+                  my $anchor_attributes = '';
+                  if ($USE_ACCESSKEY and (defined($BUTTONS_ACCESSKEY{$button_href})) and ($BUTTONS_ACCESSKEY{$button_href} ne ''))
+                  {
+                      $anchor_attributes = "accesskey=\"$BUTTONS_ACCESSKEY{$button_href}\"";
+                  }
+                  if ($USE_REL_REV and (defined($BUTTONS_REL{$button_href})) and ($BUTTONS_REL{$button_href} ne ''))
+                  {
+                      $anchor_attributes .= " rel=\"$BUTTONS_REL{$button_href}\"";
+                  }
+                  print $fh "" .
+                        &$anchor('',
+                                    $Texi2HTML::HREF{$button_href},
+                                    $$text,
+                                    $anchor_attributes
+                                   ) 
+                                    ;
+                }
+                else
+                {
+                  print $fh $$text;
+                }
+            }
+        }
+        elsif ($button eq ' ')
+        {                       # handle space button
+            print $fh
+                ($ICONS && $ACTIVE_ICONS{' '}) ?
+                    &$button_icon_img($BUTTONS_NAME{$button}, $ACTIVE_ICONS{' '}) :
+                        $NAVIGATION_TEXT{' '};
+            #next;
+        }
+        elsif ($Texi2HTML::HREF{$button})
+        {                       # button is active
+            my $btitle = $BUTTONS_GOTO{$button} ?
+                'title="' . $BUTTONS_GOTO{$button} . '"' : '';
+            if ($USE_ACCESSKEY and (defined($BUTTONS_ACCESSKEY{$button})) and ($BUTTONS_ACCESSKEY{$button} ne ''))
+            {
+                $btitle .= " accesskey=\"$BUTTONS_ACCESSKEY{$button}\"";
+            }
+            if ($USE_REL_REV and (defined($BUTTONS_REL{$button})) and ($BUTTONS_REL{$button} ne ''))
+            {
+                $btitle .= " rel=\"$BUTTONS_REL{$button}\"";
+            }
+            if ($ICONS && $ACTIVE_ICONS{$button})
+            {                   # use icon
+                print $fh '' .
+                    &$anchor('',
+                        $Texi2HTML::HREF{$button},
+                        &$button_icon_img($BUTTONS_NAME{$button},
+                                   $ACTIVE_ICONS{$button},
+                                   $Texi2HTML::SIMPLE_TEXT{$button}),
+                        $btitle
+                      );
+            }
+            else
+            {                   # use text
+                print $fh
+                    '[' .
+                        &$anchor('',
+                                    $Texi2HTML::HREF{$button},
+                                    $NAVIGATION_TEXT{$button},
+                                    $btitle
+                                   ) .
+                                       ']';
+            }
+        }
+        else
+        {                       # button is passive
+            print $fh
+                $ICONS && $PASSIVE_ICONS{$button} ?
+                    &$button_icon_img($BUTTONS_NAME{$button},
+                                          $PASSIVE_ICONS{$button},
+                                          $Texi2HTML::SIMPLE_TEXT{$button}) :
+
+                                              "[" . $NAVIGATION_TEXT{$button} . "]";
+        }
+        print $fh "</td>\n" if $vertical;
+        print $fh "</tr>\n" if $vertical;
+    }
+    print $fh "</td>" unless $beginofline;
+    print $fh "</tr>" unless $vertical;
+    print $fh "</table>\n";
+}
+
+
+@Texi2HTML::Config::SECTION_BUTTONS =
+    ('left-aligned-cell-1', 'FastBack', 
+     'center-aligned-cell-3', 'Top', 'Contents', 'Index', 'About',
+     'right-aligned-cell-1', 'FastForward',
+     'newline',
+     'left-aligned-cell-2', 'Back',
+     'center-aligned-cell-1', 'Up',
+     'right-aligned-cell-2', 'Forward'
+    );
+
+# buttons for misc stuff
+@Texi2HTML::Config::MISC_BUTTONS = ('center-aligned-cell-3', 'Top', 'Contents', 'Index', 'About');
+
+# buttons for chapter file footers
+# (and headers but only if SECTION_NAVIGATION is false)
+@Texi2HTML::Config::CHAPTER_BUTTONS =
+    ('left-aligned-cell-1', 'FastBack', 
+     'center-aligned-cell-3', 'Top', 'Contents', 'Index', 'About',
+     'right-aligned-cell-1', 'FastForward',
+    );
+
+# buttons for section file footers
+@Texi2HTML::Config::SECTION_FOOTER_BUTTONS =
+    ('left-aligned-cell-1', 'FastBack', 
+     'center-aligned-cell-3', 'Top', 'Contents', 'Index', 'About',
+     'right-aligned-cell-1', 'FastForward',
+     'newline',
+     'left-aligned-cell-2', 'Back',
+     'center-aligned-cell-1', 'Up',
+     'right-aligned-cell-2', 'Forward'
+    );
+
+@Texi2HTML::Config::NODE_FOOTER_BUTTONS =
+    ('left-aligned-cell-1', 'FastBack', 
+     'center-aligned-cell-3', 'Top', 'Contents', 'Index', 'About',
+     'right-aligned-cell-1', 'FastForward',
+     'newline',
+     'left-aligned-cell-2', 'Back',
+     'center-aligned-cell-1', 'Up',
+     'right-aligned-cell-2', 'Forward'
+    );
+
+# $Texi2HTML::Config::SPLIT = 'section';
+@Texi2HTML::Config::CSS_REFS = ("lilypond.css");
+$Texi2HTML::Config::USE_ACCESSKEY = 1;
+$Texi2HTML::Config::USE_LINKS = 1;
+$Texi2HTML::Config::USE_REL_REV = 1;
+$Texi2HTML::Config::element_file_name = \&split_at_numbered_sections;
+$Texi2HTML::Config::print_element_header = \&lilypond_print_element_header;
+$Texi2HTML::Config::print_page_foot = \&print_lilypond_page_foot;
+$Texi2HTML::Config::print_navigation = \&lilypond_print_navigation;
+$Texi2HTML::Config::external_ref = \&lilypond_external_ref;
+$Texi2HTML::Config::menu_link = \&lilypond_menu_link;
+
+
+# For split pages, use index(.lang).html as start page!
+if ($Texi2HTML::Config::SPLIT == 'section') {
+  my $lng = $Texi2HTML::THISDOC{'current_lang'};
+  if ($lng and ($lng ne "en")) {
+    $Texi2HTML::Config::TOP_FILE = 'index.'.$lng.'.html';
+  } else {
+    $Texi2HTML::Config::TOP_FILE = 'index.html';
+  }
+}
+
+
+
+# Try to make use of @translationof to generate files according to the original
+# English section title...
+sub lilypond_unknown($$$$$)
+{
+    my $macro = shift;
+    my $line = shift;
+    my $pass = shift;
+    my $stack = shift;
+    my $state = shift;
+    
+    if ($pass == 1 and $macro eq "translationof") {
+      if (ref($state->{'element'})=='HASH') {
+        $state->{'element'}->{'translationof'} = $line;
+      }
+      print "UNKNOWN: macro:$macro, line:$line, pass:$pass, stack:$stack, state:$state\n";
+      print Dumper($stack);
+      print Dumper($state);
+    }
+    if ($pass == 2 and $macro eq "translationof") {
+#       if (ref($state->{'element'})=='HASH') {
+# #         $state->{'element'}->{'translationonf'} = $line;
+#       }
+      print "UNKNOWN: macro:$macro, line:$line, pass:$pass, stack:$stack, state:$state\n";
+      print Dumper($stack);
+      print Dumper($state);
+      return ($line, 0, undef, undef);
+    } else {
+      return t2h_default_unknown($macro, $line, $pass, $stack, $state);
+    }
+}
+$Texi2HTML::Config::unknown                  = \&lilypond_unknown;
+
+
+
+return 1;
index 1f4865d0099ae368e4bb01800f97e44921778dc2..979533ea1ef92bced86f3e757589e3e72e9fa973 100644 (file)
@@ -1,9 +1,13 @@
+ifneq "$(ISOLANG)" ""
+TEXI2HTML_LANG=--lang=$(ISOLANG)
+endif
+
 $(outdir)/%/index.html: $(outdir)/%.texi
        mkdir -p $(dir $@)
-       -$(MAKEINFO) -P $(outdir) --output=$(outdir)/$* --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
+       -$(TEXI2HTML) --I=$(outdir) --output=$(outdir)/$* --split=section $(TEXI2HTML_LANG) $<
 
 $(outdir)/%-big-page.html: $(outdir)/%.texi
-       -$(MAKEINFO) -P $(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split --no-headers $< 
+       -$(TEXI2HTML) --I=$(outdir) --output=$@ $(TEXI2HTML_LANG) $< 
 
 $(outdir)/%.pdftexi: $(outdir)/%.texi doc-po
        $(PYTHON) $(buildscript-dir)/texi-gettext.py $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(ISOLANG) $<
index 28a795b0da9bc9f789f467934866aecb4cf16301..ba99a62fcb7f21f9a160f0a0ab70d3c0af642e60 100644 (file)
@@ -11,6 +11,9 @@ LILYPOND_BOOK_INCLUDES += $(DOCUMENTATION_INCLUDES)
 MAKEINFO_FLAGS += --force --enable-encoding -D 'version $(TOPLEVEL_VERSION)' $(DOCUMENTATION_INCLUDES)
 MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
 
+TEXI2HTML_FLAGS += --init-file=$(top-src-dir)/lilypond-texi2html.init --css-ref=lilypond.css $(DOCUMENTATION_INCLUDES)
+TEXI2HTML = $(TEXI2HTML_PROGRAM) $(TEXI2HTML_FLAGS)
+
 TEXI2PDF_FLAGS += --batch --tidy --command '@set version $(TOPLEVEL_VERSION)'
 TEXI2PDF_FLAGS += $(DOCUMENTATION_INCLUDES)
 
index 88a4fe47a2d122078fa1dde8de0a1d96323619b5..f553eec37ffc33d7bdaa32c00c2ad39af1b38775 100644 (file)
@@ -30,14 +30,30 @@ $(outdir)/.info-images-dir.dep:
 
 endif
 
+# Settings for texi2html:
+ifneq ($(ISOLANG),) 
+TEXI2HTML_LANG = --lang=$ISOLANG
+endif
+TEXI2HTML_FLAGS += --init-file=$(top-src-dir)/lilypond-texi2html.init --css-ref=lilypond.css $(DOCUMENTATION_INCLUDES)
+TEXI2HTML = $(TEXI2HTML_PROGRAM) $(TEXI2HTML_FLAGS) $(TEXI2HTML_LANG)
+
+
+
 $(outdir)/%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir.dep
        $(MAKEINFO) -I$(outdir) --output=$@ $<
 
+
+$(outdir)/%/index.html: $(outdir)/%.texi
+       mkdir -p $(dir $@)
+       $(TEXI2HTML) --I=$(outdir) --output=$@ --split=section $<
+#      $(TEXI2HTML) --I=$(outdir) --output=$(dir $@) --split=section $<
+
+# TODO: Pass -D bigpage to texi2html
 $(outdir)/%-big-page.html: $(outdir)/%.texi
-       $(MAKEINFO) -I $(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
+       $(TEXI2HTML) --I=$(outdir) --output=$@ $< 
 
 $(outdir)/%.html: $(outdir)/%.texi
-       $(MAKEINFO) -I $(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split --no-headers $<
+       $(TEXI2HTML) --I=$(outdir) --output=$@ $<
 
 $(outdir)/%.html.omf: %.texi
        $(call GENERATE_OMF,html)
@@ -48,10 +64,6 @@ $(outdir)/%.pdf.omf: %.texi
 $(outdir)/%.ps.gz.omf: %.texi
        $(call GENERATE_OMF,ps.gz)
 
-$(outdir)/%/index.html: $(outdir)/%.texi
-       mkdir -p $(dir $@)
-       $(MAKEINFO) -I $(outdir) --output=$(dir $@) --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
-
 $(outdir)/%.pdf: $(outdir)/%.texi
        cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) --batch $(TEXINFO_PAPERSIZE_OPTION) $(<F)
 
index 4ee7cefa474dac6762da3b9d4aef10579c0fde2e..c9c9c49e73619e9883a20bc51e9aa5f5f8183ae3 100644 (file)
@@ -15,6 +15,8 @@ TEXINFO_PAPERSIZE_OPTION= $(if $(findstring $(PAPERSIZE),a4),,-t @afourpaper)
 MAKEINFO_FLAGS = --enable-encoding -D 'version $(TOPLEVEL_VERSION)'
 MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
 
+TEXI2HTML_FLAGS = 
+TEXI2HTML = LANG= $(TEXI2HTML_PROGRAM) $(TEXI2HTML_FLAGS)
 
 # info stuff
 INFO_INSTALL_FILES = $(wildcard $(addsuffix *, $(INFO_FILES)))