diff --git a/README.md b/README.md index 27c5348b2d..21d44d00e2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Inform 7 -v10.1.0-beta+6V24 'Krypton' (16 June 2022) +v10.1.0-beta+6V25 'Krypton' (20 June 2022) ## About Inform 7 diff --git a/build.txt b/build.txt index 570a3dd1dc..4713e93684 100644 --- a/build.txt +++ b/build.txt @@ -1,3 +1,3 @@ Prerelease: beta -Build Date: 16 June 2022 -Build Number: 6V24 +Build Date: 20 June 2022 +Build Number: 6V25 diff --git a/docs/assertions-module/5-ptd.html b/docs/assertions-module/5-ptd.html index b4198062a3..db4681b963 100644 --- a/docs/assertions-module/5-ptd.html +++ b/docs/assertions-module/5-ptd.html @@ -940,9 +940,9 @@

HTML_TAG("br"); WRITE("   "); HTML_OPEN("i"); - HTML::begin_colour(OUT, I"ff4040"); + HTML::begin_span(OUT, I"phrasetokenvaluetext"); WRITE("phrases"); - HTML::end_colour(OUT); + HTML::end_span(OUT); HTML_CLOSE("i"); } } @@ -974,11 +974,11 @@

if ((p[i] == '/') && (tinted == FALSE)) { tinted = TRUE; if (paste_format == PASTE_PHRASE_FORMAT) break; - HTML::begin_colour(OUT, I"808080"); + HTML::begin_span(OUT, I"phraseword"); } WRITE("%c", p[i]); } - if ((paste_format != PASTE_PHRASE_FORMAT) && (tinted)) HTML::end_colour(OUT); + if ((paste_format != PASTE_PHRASE_FORMAT) && (tinted)) HTML::end_span(OUT);

§28.1.2. Describe a token in the word sequence28.1.2 = @@ -990,11 +990,13 @@

if (writing_a_say == FALSE) WRITE("("); if (inv) { parse_node *found = Invocations::get_token_as_parsed(inv, ix); - text_stream *col = I"008000"; - if (Node::is(found, UNKNOWN_NT)) col = I"800000"; - HTML::begin_colour(OUT, col); + if (Node::is(found, UNKNOWN_NT)) { + HTML::begin_span(OUT, I"indexdullred"); + } else { + HTML::begin_span(OUT, I"indexdullgreen"); + } WRITE("%W", Node::get_text(found)); - HTML::end_colour(OUT); + HTML::end_span(OUT); WRITE(" - "); Dash::note_inv_token_text(found, (idtd->token_sequence[ix].construct == NEW_LOCAL_IDTC)?TRUE:FALSE); @@ -1016,56 +1018,56 @@

case STANDARD_IDTC: { parse_node *spec = idtd->token_sequence[ix].to_match; if (Specifications::is_kind_like(spec)) { - HTML::begin_colour(OUT, I"4040ff"); + HTML::begin_span(OUT, I"phrasetokendesctext"); Kinds::Textual::write(OUT, Specifications::to_kind(spec)); - HTML::end_colour(OUT); + HTML::end_span(OUT); } else if ((Node::is(spec, CONSTANT_NT)) || (Specifications::is_description(spec))) { - HTML::begin_colour(OUT, I"4040ff"); + HTML::begin_span(OUT, I"phrasetokendesctext"); WRITE("%W", Node::get_text(spec)); - HTML::end_colour(OUT); + HTML::end_span(OUT); } else { HTML_OPEN("i"); - HTML::begin_colour(OUT, I"ff4040"); + HTML::begin_span(OUT, I"phrasetokenvaluetext"); Specifications::write_out_in_English(OUT, spec); - HTML::end_colour(OUT); + HTML::end_span(OUT); HTML_CLOSE("i"); } break; } case NEW_LOCAL_IDTC: - HTML::begin_colour(OUT, I"E00060"); + HTML::begin_span(OUT, I"phrasetokentext"); WRITE("a new name"); - HTML::end_colour(OUT); break; + HTML::end_span(OUT); break; case OLD_LOCAL_IDTC: - HTML::begin_colour(OUT, I"E00060"); + HTML::begin_span(OUT, I"phrasetokentext"); WRITE("a temporary named value"); if ((IDTypeData::token_kind(idtd, ix)) && (Kinds::eq(IDTypeData::token_kind(idtd, ix), K_value) == FALSE)) { WRITE(" holding "); Kinds::Textual::write_articled(OUT, IDTypeData::token_kind(idtd, ix)); } - HTML::end_colour(OUT); break; + HTML::end_span(OUT); break; case CONDITION_IDTC: - HTML::begin_colour(OUT, I"E00060"); + HTML::begin_span(OUT, I"phrasetokentext"); WRITE("a condition"); - HTML::end_colour(OUT); break; + HTML::end_span(OUT); break; case STORAGE_IDTC: - HTML::begin_colour(OUT, I"E00060"); + HTML::begin_span(OUT, I"phrasetokentext"); WRITE("a stored value"); - HTML::end_colour(OUT); break; + HTML::end_span(OUT); break; case TABLE_REF_IDTC: - HTML::begin_colour(OUT, I"E00060"); + HTML::begin_span(OUT, I"phrasetokentext"); WRITE("a table entry"); - HTML::end_colour(OUT); break; + HTML::end_span(OUT); break; case KIND_NAME_IDTC: - HTML::begin_colour(OUT, I"E00060"); + HTML::begin_span(OUT, I"phrasetokentext"); WRITE("name of kind"); - HTML::end_colour(OUT); break; + HTML::end_span(OUT); break; case VOID_IDTC: - HTML::begin_colour(OUT, I"E00060"); + HTML::begin_span(OUT, I"phrasetokentext"); WRITE("a phrase"); - HTML::end_colour(OUT); break; + HTML::end_span(OUT); break; } diff --git a/docs/core-module/1-wtc.html b/docs/core-module/1-wtc.html index b036c7faf6..1a1701d656 100644 --- a/docs/core-module/1-wtc.html +++ b/docs/core-module/1-wtc.html @@ -374,14 +374,18 @@

}

§12. The name of the unblorbed story file is chosen for us by Inbuild, so -we have to extract it from the build graph: +we have to extract it from the build graph. +

+ +

Note that this will return NULL if the current run of Inform is to +produce, say, a C program rather than a Glulx or Z-machine story file.

 filename *Task::storyfile_file(void) {
     if (inform7_task == NULL) internal_error("there is no current task");
     build_vertex *V = inform7_task->project->unblorbed_vertex;
-    if (V == NULL) internal_error("project graph not ready");
+    if (V == NULL) return NULL;
     return V->as_file;
 }
 
diff --git a/docs/html-module/2-dr.html b/docs/html-module/2-dr.html index 396a5f84c6..6cd55ab8ad 100644 --- a/docs/html-module/2-dr.html +++ b/docs/html-module/2-dr.html @@ -74,7 +74,7 @@

To render a passage of extension documentation as HTML.

-
+

§1. Disclaimer. The following code originated as a port of a simplified version of an early form of the Inform documentation tool indoc: in general, that will do a @@ -113,7 +113,7 @@

-void DocumentationRenderer::href_of_example(OUTPUT_STREAM, text_stream *base_leafname,
+void DocumentationRenderer::href_of_example(OUTPUT_STREAM, text_stream *base_leafname,
     int to_example_variant, int to_example_anchor) {
     for (int i=0, L = Str::len(base_leafname); i<L; i++) {
         if ((Str::includes_wide_string_at(base_leafname, L"-eg", i)) &&
@@ -238,14 +238,15 @@ 

 void DocumentationRenderer::table_of_contents(wording W, OUTPUT_STREAM, text_stream *base_leafname) {
-    int heading_count = 0, chapter_count = 0, section_count = 0, example_count = 0;
+    int heading_count = 0, chapter_count = 0, section_count = 0, example_count = 0, indentation = 0;
     LOOP_THROUGH_WORDING(i, W) {
         int edhl, asterisks;
         wording NW = EMPTY_WORDING, RUBW = EMPTY_WORDING;
         if (Lexer::word(i) == PARBREAK_V) {
             while (Lexer::word(i) == PARBREAK_V) i++;
             if (i>Wordings::last_wn(W)) break;
-            if (DocumentationRenderer::extension_documentation_heading(
+            Determine indentation of new paragraph7.3;
+            if (indentation == 0 && DocumentationRenderer::extension_documentation_heading(
                 Wordings::from(W, i), &edhl, &NW)) {
                 heading_count++;
                 if (heading_count == 1) {
@@ -295,19 +296,19 @@ 

     switch (edhl) {
         case 1:
-            HTML::begin_colour(OUT, I"000000");
+            HTML::begin_span(OUT, I"indexblack");
             HTML_OPEN("b");
             HTML_OPEN_WITH("a",
                 "style=\"text-decoration: none\" href=#docsec%d", heading_count);
             WRITE("Chapter %d: ", chapter_count);
             HTML_CLOSE("a");
             HTML_CLOSE("b");
-            HTML::end_colour(OUT);
+            HTML::end_span(OUT);
             break;
         case 2:
             if (chapter_count > 0)  if there are chapters as well as sections...
                 WRITE("&nbsp;&nbsp;&nbsp;");  ...then set an indentation before entry
-            HTML::begin_colour(OUT, I"000000");
+            HTML::begin_span(OUT, I"indexblack");
             HTML_OPEN_WITH("a", "style=\"text-decoration: none\" href=#docsec%d", heading_count);
             WRITE("Section ");
             if (chapter_count > 0)  if there are chapters as well as sections...
@@ -315,7 +316,7 @@ 

else WRITE("%d: ", section_count); otherwise quote section number only HTML_CLOSE("a"); - HTML::end_colour(OUT); + HTML::end_span(OUT); break; default: internal_error("unable to set this heading level in extension TOC"); } @@ -338,13 +339,13 @@

WRITE_TO(link, "style=\"text-decoration: none\" href=\""); DocumentationRenderer::href_of_example(link, base_leafname, example_count, example_count); WRITE_TO(link, "\""); - HTML::begin_colour(OUT, I"000000"); + HTML::begin_span(OUT, I"indexblack"); HTML_OPEN_WITH("a", "%S", link); PUT('A'+example_count-1); the letter A to Z WRITE(" &mdash; "); DocumentationRenderer::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, NULL); HTML_CLOSE("a"); - HTML::end_colour(OUT); + HTML::end_span(OUT); HTML_TAG("br");

  • This code is used in §7.
@@ -361,7 +362,7 @@

define EDOC_FRAGMENT_ONLY -2 must differ from this and from all example variant numbers

-int DocumentationRenderer::set_body_text(wording W, OUTPUT_STREAM,
+int DocumentationRenderer::set_body_text(wording W, OUTPUT_STREAM,
     int example_which_is_open, text_stream *base_leafname) {
     int heading_count = 0, chapter_count = 0, section_count = 0, example_count = 0;
     int mid_example = FALSE, skipping_text_of_an_example = FALSE,
@@ -374,29 +375,28 @@ 

Handle a paragraph break9.1; while (Lexer::word(i) == PARBREAK_V) i++; if (i>Wordings::last_wn(W)) break; treat multiple paragraph breaks as one - Determine indentation of new paragraph9.2; - if (DocumentationRenderer::extension_documentation_heading(Wordings::from(W, i), &edhl, &NW)) { + Determine indentation of new paragraph7.3; + if (indentation == 0 && DocumentationRenderer::extension_documentation_heading(Wordings::from(W, i), &edhl, &NW)) { heading_count++; if (edhl == 1) { chapter_count++; section_count = 0; if (chapter_count > 1) { - HTML_CLOSE("p"); HTML_TAG("hr"); rule a line between chapters } } if (edhl == 2) section_count++; - Typeset the heading of this chapter or section9.6; + Typeset the heading of this chapter or section9.5; i = Wordings::last_wn(NW); continue; } if ((example_count < 26) && (DocumentationRenderer::extension_documentation_example( Wordings::from(W, i), &asterisks, &NW, &RUBW))) { skipping_text_of_an_example = FALSE; - if (mid_example) Close the previous example's text9.9; + if (mid_example) Close the previous example's text9.8; mid_example = FALSE; example_count++; - Typeset the heading of this example9.7; + Typeset the heading of this example9.6; if (example_count == example_which_is_open) { - Open the new example's text9.8; + Open the new example's text9.7; mid_example = TRUE; } else skipping_text_of_an_example = TRUE; i = Wordings::last_wn(RUBW); continue; @@ -404,12 +404,14 @@

} if (skipping_text_of_an_example) continue; - Handle a line or column break, if there is one9.4; - Transcribe an ordinary word of the documentation9.5; + Handle a line or column break, if there is one9.3; + Transcribe an ordinary word of the documentation9.4; if (close_I6_position == i) WRITE(" -)"); } - if (mid_example) Close the previous example's text9.9; - if (example_which_is_open != EDOC_FRAGMENT_ONLY) Handle a paragraph break9.1; + if (mid_example) Close the previous example's text9.8; + if (example_which_is_open != EDOC_FRAGMENT_ONLY) { + Handle a paragraph break9.1; + } return example_count; }

@@ -423,10 +425,10 @@

     if (mid_displayed_source_text)  {
-        HTML::end_colour(OUT);
+        HTML::end_span(OUT);
         if (mid_I7_table) End I7 table in extension documentation9.1.1;
         HTML_CLOSE("blockquote");
-    } else {
+    }   else {
         HTML_CLOSE("p");
     }
     WRITE("\n");
@@ -434,7 +436,7 @@ 

mid_displayed_source_text = FALSE; mid_I7_table = FALSE;

-

§9.2. The indentation setting is made here because a tab anywhere else does +

§7.3. The indentation setting is made here because a tab anywhere else does not mean a paragraph has been indented. Here i is at the number of the first word after the paragraph break; the break character corresponding to it is the one before that word, so describes the kind of whitespace @@ -442,14 +444,14 @@

paragraph.

-

Determine indentation of new paragraph9.2 = +

Determine indentation of new paragraph7.3 =

     indentation = 0; if (Lexer::break_before(i) == '\t') indentation = 1;
 
-
-

§9.3. Positions for paste icons in extension documentation are marked with +

  • This code is used in §7, §9.
+

§9.2. Positions for paste icons in extension documentation are marked with asterisk and colon:

@@ -458,37 +460,37 @@

* : ...

-

§9.4. Two lower-level sorts of breaks can also occur in the middle of a paragraph: +

§9.3. Two lower-level sorts of breaks can also occur in the middle of a paragraph: line breaks, indicated by newlines plus some tabs, and column breaks inside I7 source tables, indicated by tabs. We have to deal with those before we can move on to the subsequent word.

-

Handle a line or column break, if there is one9.4 = +

Handle a line or column break, if there is one9.3 =

     if (Lexer::indentation_level(i) > 0) indentation = Lexer::indentation_level(i);
 
-    if (indentation > 0) Handle the start of a line which is indented9.4.2;
+    if (indentation > 0) Handle the start of a line which is indented9.3.2;
     if (<extension-documentation-paste-marker>(Wordings::from(W, i))) {
         wording W = GET_RW(<extension-documentation-paste-marker>, 1);
-        Incorporate an icon linking to a Javascript function to paste the text which follows9.4.1;
+        Incorporate an icon linking to a Javascript function to paste the text which follows9.3.1;
         i++; continue;
     }
     indentation = 0;
     if ((mid_I7_table) && ((Lexer::break_before(i) == '\t') || (Lexer::indentation_level(i) == 1))) {
         if (row_of_table_is_empty == FALSE)
-            End table cell for I7 table in extension documentation9.4.3;
-        Begin table cell for I7 table in extension documentation9.4.4;
+            End table cell for I7 table in extension documentation9.3.3;
+        Begin table cell for I7 table in extension documentation9.3.4;
         row_of_table_is_empty = FALSE;
     }
 
  • This code is used in §9.
-

§9.5. See Javascript Pastes for further explanation of the general method here. +

§9.4. See Javascript Pastes for further explanation of the general method here.

-

Transcribe an ordinary word of the documentation9.5 = +

Transcribe an ordinary word of the documentation9.4 =

@@ -502,7 +504,7 @@ 

if (Lexer::word(i) == OPENI6_V) close_I6_position = i+1; ensure I6 literals are closed

-

§9.4.1. A paste causes the same material to be set twice: once in the argument to +

§9.3.1. A paste causes the same material to be set twice: once in the argument to the Javascript paste function (which is passed to the application when the user clicks on the paste icon, and thus ends up in the Source panel), and once also in the HTML documentation. That's why the code here ranges forward @@ -511,7 +513,7 @@

but does not advance i commensurately.

-

Incorporate an icon linking to a Javascript function to paste the text which follows9.4.1 = +

Incorporate an icon linking to a Javascript function to paste the text which follows9.3.1 =

@@ -525,8 +527,8 @@ 

} PasteButtons::paste_W(OUT, Wordings::new(x, y));

-
  • This code is used in §9.4.
-

§9.4.2. The first step of indentation is handled using the <blockquote> tag; +

  • This code is used in §9.3.
+

§9.3.2. The first step of indentation is handled using the <blockquote> tag; within that, further tab stops are simulated by printing a row of four non-breaking spaces for each indentation level above 1. A paragraph of indented (i.e., display matter) beginning with the word "Table" is @@ -535,7 +537,7 @@

need to achieve with an HTML <table>.

-

Handle the start of a line which is indented9.4.2 = +

Handle the start of a line which is indented9.3.2 =

@@ -544,15 +546,15 @@ 

if (start_table_next_line) { start_table_next_line = FALSE; mid_I7_table = TRUE; - Begin I7 table in extension documentation9.4.2.1; + Begin I7 table in extension documentation9.3.2.1; } else { - if (mid_I7_table) Begin new row of I7 table in extension documentation9.4.2.2 + if (mid_I7_table) Begin new row of I7 table in extension documentation9.3.2.2 else HTML_TAG("br"); } if (mid_I7_table) row_of_table_is_empty = TRUE; } else { HTML_OPEN("blockquote"); - HTML::begin_colour(OUT, I"000080"); + HTML::begin_span(OUT, I"indexdullblue"); mid_displayed_source_text = TRUE; if (<table-sentence>(Wordings::from(W, i))) start_table_next_line = TRUE; @@ -560,25 +562,25 @@

indentation--; for (j=0; j<indentation; j++) WRITE("&nbsp;&nbsp;&nbsp;&nbsp;");

- -

§9.6. Typesetting the headings. That is thankfully all for the tormented logic of all those changes of state: +

  • This code is used in §9.3.
+

§9.5. Typesetting the headings. That is thankfully all for the tormented logic of all those changes of state: from here to the rest of the section, all we do is to generate pretty HTML, and without altering any variables or causing any side-effects at all. First, the headings. Recall that heading number N is required to be at anchor #docsecN.

-

Typeset the heading of this chapter or section9.6 = +

Typeset the heading of this chapter or section9.5 =

     HTML_OPEN("p");
     switch (edhl) {
         case 1:
-            HTML::begin_colour(OUT, I"800000");
+            HTML::begin_span(OUT, I"indexdullred");
             break;
         case 2:
-            HTML::begin_colour(OUT, I"000000");
+            HTML::begin_span(OUT, I"indexblack");
             break;
     }
     HTML_OPEN("b");
@@ -596,45 +598,46 @@ 

DocumentationRenderer::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, NULL); HTML_CLOSE("span"); HTML_CLOSE("b"); - HTML::end_colour(OUT); + HTML::end_span(OUT); HTML_CLOSE("p");

  • This code is used in §9.
-

§9.7. An example is set with a two-table header, and followed optionally by a +

§9.6. An example is set with a two-table header, and followed optionally by a table of its inset copy, shaded to distinguish it from the rest of the page. The heading is constructed with a main table of one row of two cells, in the following section. The left-hand cell then contains a further table, in the next section.

-

Typeset the heading of this example9.7 = +

Typeset the heading of this example9.6 =

-    HTML_OPEN("hr");  rule a line before the example heading
+    HTML_TAG("hr");  rule a line before the example heading
     HTML::begin_plain_html_table(OUT);
     HTML_OPEN("tr");
 
      Left hand cell: the oval icon
     HTML_OPEN_WITH("td", "halign=\"left\" valign=\"top\" cellpadding=0 cellspacing=0 width=38px");
     HTML_OPEN_WITH("span", "id=eg%d", example_count);  provide the anchor point
-    Typeset the lettered oval example icon9.7.1;
+    Typeset the lettered oval example icon9.6.1;
     HTML_CLOSE("span");  end the textual link
     HTML_CLOSE("td");
 
      Right hand cell: the asterisks and title, with rubric underneath
     HTML_OPEN_WITH("td", "cellpadding=0 cellspacing=0 halign=\"left\" valign=\"top\"");
-    Incorporate link to the example opened up9.7.2;
+    Incorporate link to the example opened up9.6.2;
     while (asterisks-- > 0)
         HTML_TAG_WITH("img", "border=\"0\" src='inform:/doc_images/asterisk.png'");
     HTML_OPEN("b");
-    HTML::begin_colour(OUT, I"505050");
+    HTML::begin_span(OUT, I"indexdarkgrey");
     WRITE("&nbsp;Example&nbsp;");
-    HTML::end_colour(OUT);
-    HTML::begin_colour(OUT, I"000000");
+    HTML::end_span(OUT);
+    HTML::begin_span(OUT, I"indexblack");
     DocumentationRenderer::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, base_leafname);
-    HTML::end_colour(OUT);
+    HTML::end_span(OUT);
     HTML_CLOSE("b");
+    HTML_CLOSE("a");  Link does not cover body, only heading
     HTML_TAG("br");
     HTML_OPEN("p");
     DocumentationRenderer::set_body_text(RUBW, OUT, EDOC_FRAGMENT_ONLY, base_leafname);
@@ -645,7 +648,7 @@ 

HTML::end_html_table(OUT);

-

§9.7.1. The little oval icon with its superimposed boldface letter is much harder to +

§9.6.1. The little oval icon with its superimposed boldface letter is much harder to get right on all browsers than it looks, and the following is the result of some pretty grim experimentation. Basically, we make a tight, borderless, one-cell-in-one-row table, use CSS to make a transparent PNG image of an oval @@ -654,33 +657,32 @@

had its infamous PNG transparency bug.)

-

Typeset the lettered oval example icon9.7.1 = +

Typeset the lettered oval example icon9.6.1 =

     HTML::begin_plain_html_table(OUT);
     HTML_OPEN_WITH("tr", "class=\"oval\"");
     HTML_OPEN_WITH("td", "width=38px height=30px align=\"left\" valign=\"center\"");
-    Incorporate link to the example opened up9.7.2;
+    Incorporate link to the example opened up9.6.2;
     HTML_OPEN_WITH("div",
         "class=\"paragraph Body\" style=\"line-height: 1px; margin-bottom: 0px; "
-        "margin-top: 0px; padding-bottom: 0pt; padding-top: 0px; text-align: center; "
-        "color: #202020; font-size: 14px; line-height: 1px;\"");
-    HTML_OPEN("b");
+        "margin-top: 0px; padding-bottom: 0pt; padding-top: 0px; text-align: center;\"");
+    HTML::begin_span(OUT, I"extensionexampleletter");
     PUT('A' + example_count - 1);
-    HTML_CLOSE("b");
+    HTML::end_span(OUT);
     HTML_CLOSE("div");
     HTML_CLOSE("a");
     HTML_CLOSE("td");
     HTML_CLOSE("tr");
     HTML::end_html_table(OUT);
 
-
  • This code is used in §9.7.
-

§9.7.2. Clicking on the example banner opens it up, if it's currently closed, or +

  • This code is used in §9.6.
+

§9.6.2. Clicking on the example banner opens it up, if it's currently closed, or closes it up, if it's currently open.

-

Incorporate link to the example opened up9.7.2 = +

Incorporate link to the example opened up9.6.2 =

@@ -694,44 +696,44 @@ 

HTML_OPEN_WITH("a", "%S", url); DISCARD_TEXT(url)

- -

§9.4.2.1. Typesetting I7 tables in displayed source text. Unsurprisingly, I7 tables are set (after their titling lines) as HTML tables, +

+

§9.3.2.1. Typesetting I7 tables in displayed source text. Unsurprisingly, I7 tables are set (after their titling lines) as HTML tables, and this is fiddly but elementary in the usual way of HTML tables:

-

Begin I7 table in extension documentation9.4.2.1 = +

Begin I7 table in extension documentation9.3.2.1 =

-    HTML::end_colour(OUT);
+    HTML::end_span(OUT);
     HTML_TAG("br");
     HTML::begin_plain_html_table(OUT);
     HTML::first_html_column(OUT, 0);
 
- -

§9.4.3. End table cell for I7 table in extension documentation9.4.3 = +

+

§9.3.3. End table cell for I7 table in extension documentation9.3.3 =

-    HTML::end_colour(OUT);
+    HTML::end_span(OUT);
     HTML::next_html_column(OUT, 0);
 
-
  • This code is used in §9.4.
-

§9.4.4. Begin table cell for I7 table in extension documentation9.4.4 = +

  • This code is used in §9.3.
+

§9.3.4. Begin table cell for I7 table in extension documentation9.3.4 =

-    HTML::begin_colour(OUT, I"000080");
+    HTML::begin_span(OUT, I"indexdullblue");
 
-
  • This code is used in §9.4.
-

§9.4.2.2. Begin new row of I7 table in extension documentation9.4.2.2 = +

  • This code is used in §9.3.
+

§9.3.2.2. Begin new row of I7 table in extension documentation9.3.2.2 =

     HTML::end_html_row(OUT);
     HTML::first_html_column(OUT, 0);
 
- +

§9.1.1. End I7 table in extension documentation9.1.1 =

@@ -740,31 +742,31 @@

HTML::end_html_table(OUT); -

§9.8. Typesetting the body of an example. This is done just the way all other extension documentation material is +

§9.7. Typesetting the body of an example. This is done just the way all other extension documentation material is handled, except that it is inside an inset box: which is provided by a shaded HTML table, containing just one row, which contains just one cell. Here the inset table begins:

-

Open the new example's text9.8 = +

Open the new example's text9.7 =

-    HTML::begin_html_table(OUT, "#f0f0f0", TRUE, 0, 0, 0, 0, 0);
+    HTML::begin_html_table(OUT, I"extensionexample", TRUE, 0, 0, 0, 0, 0);
     HTML::first_html_column(OUT, 0);
     HTML_OPEN("p");
 
  • This code is used in §9.
-

§9.9. And here the inset table ends: +

§9.8. And here the inset table ends:

-

Close the previous example's text9.9 = +

Close the previous example's text9.8 =

+    HTML_CLOSE("p");
     HTML::end_html_row(OUT);
     HTML::end_html_table(OUT);
-    HTML_OPEN("p");
 
  • This code is used in §9 (twice).