Added hyperlinks

This commit is contained in:
Graham Nelson 2020-04-09 14:00:28 +01:00
parent a9ce8d1be8
commit 699a03b74e
24 changed files with 1211 additions and 833 deletions

View file

@ -26,6 +26,7 @@ typedef struct source_line {
int command_code; /* used only for |COMMAND_LCAT| lines: a |*_CMD| value */
int default_defn; /* used only for |BEGIN_DEFINITION_LCAT| lines */
int plainer; /* used only for |BEGIN_CODE_LCAT| lines: suppresses box */
int enable_hyperlinks; /* used only for |CODE_BODY_LCAT| lines: link URLs in weave */
struct programming_language *colour_as; /* used only for |TEXT_EXTRACT_LCAT| lines */
int is_commentary; /* flag */
struct function *function_defined; /* if any C-like function is defined on this line */
@ -51,6 +52,7 @@ source_line *Lines::new_source_line(text_stream *line, text_file_position *tfp)
sl->command_code = NO_CMD;
sl->default_defn = FALSE;
sl->plainer = FALSE;
sl->enable_hyperlinks = FALSE;
sl->colour_as = NULL;
sl->is_commentary = FALSE;
sl->function_defined = NULL;

View file

@ -34,7 +34,9 @@ markup syntax, and trying to detect incorrect uses of one within the other.
@<Parse a section@> =
int comment_mode = TRUE, extract_mode = FALSE;
int code_lcat_for_body = NO_LCAT, code_plainness_for_body = FALSE;
int code_lcat_for_body = NO_LCAT,
code_plainness_for_body = FALSE,
hyperlink_body = FALSE;
programming_language *code_pl_for_body = NULL;
int before_bar = TRUE;
int next_par_number = 1;
@ -339,6 +341,7 @@ handling. We'll call these "paragraph macros".
code_lcat_for_body = CODE_BODY_LCAT; /* code follows on subsequent lines */
code_pl_for_body = NULL;
code_plainness_for_body = FALSE;
hyperlink_body = FALSE;
DISCARD_TEXT(para_macro_name);
continue;
}
@ -425,14 +428,26 @@ division in the current section.
Main::error_in_web(I"unknown material after '='", L);
}
code_plainness_for_body = L->plainer;
hyperlink_body = L->enable_hyperlinks;
Regexp::dispose_of(&mr);
Regexp::dispose_of(&mr2);
continue;
@<Make plainer@> =
if (Str::eq(mr2.exp[0], I"undisplayed")) L->plainer = TRUE;
else if (Str::len(mr2.exp[0]) > 0)
Main::error_in_web(I"only 'undisplayed' can precede 'text' here", L);
match_results mr3 = Regexp::create_mr();
while (TRUE) {
if (Regexp::match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) {
if (Str::eq(mr3.exp[0], I"undisplayed")) L->plainer = TRUE;
else if (Str::eq(mr3.exp[0], I"hyperlinked")) L->enable_hyperlinks = TRUE;
else {
Main::error_in_web(
I"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here", L);
}
} else break;
Str::clear(mr2.exp[0]);
Str::copy(mr2.exp[0], mr3.exp[1]);
}
Regexp::dispose_of(&mr3);
@<Spool from file@> =
L->category = BEGIN_CODE_LCAT;
@ -571,6 +586,7 @@ follows:
code_pl_for_body = NULL;
comment_mode = FALSE;
code_plainness_for_body = FALSE;
hyperlink_body = FALSE;
@ This is for |@d| and |@define|. Definitions are intended to translate to
C preprocessor macros, Inform 6 |Constant|s, and so on.
@ -744,6 +760,7 @@ CWEB, but is needed for languages which don't allow multi-line definitions.)
if ((L->category != BEGIN_DEFINITION_LCAT) && (L->category != COMMAND_LCAT)) {
L->category = code_lcat_for_body;
L->plainer = code_plainness_for_body;
L->enable_hyperlinks = hyperlink_body;
if (L->category == TEXT_EXTRACT_LCAT) L->colour_as = code_pl_for_body;
}

View file

@ -339,14 +339,11 @@ in the source is set indented in code style.
Str::copy(matter, mr.exp[1]);
TEMPORARY_TEXT(colouring);
for (int i=0; i<Str::len(original); i++) PUT_TO(colouring, PLAIN_COLOUR);
Formats::source_code(OUT, wv, 1, I"", original, colouring, I"", TRUE, TRUE, FALSE);
Formats::source_code(OUT, wv, 1, I"", original, colouring, I"", TRUE, TRUE,
FALSE, L->enable_hyperlinks);
Formats::text(OUT, wv, matter);
DISCARD_TEXT(colouring);
DISCARD_TEXT(original);
if (no_inweb_errors == 0) {
Main::error_in_web(I"Old-style pipes here", L);
no_inweb_errors = 0;
}
continue;
} else if (state->kind_of_material != REGULAR_MATERIAL) {
Formats::change_material(OUT, wv, state->kind_of_material, REGULAR_MATERIAL,
@ -389,7 +386,8 @@ and macro usage is rendered differently.
}
Formats::source_code(OUT, wv, tab_stops_of_indentation, prefatory,
matter, colouring, concluding_comment, (found == 0)?TRUE:FALSE, TRUE, TRUE);
matter, colouring, concluding_comment, (found == 0)?TRUE:FALSE, TRUE,
TRUE, L->enable_hyperlinks);
DISCARD_TEXT(colouring);
DISCARD_TEXT(concluding_comment);
DISCARD_TEXT(prefatory);
@ -499,7 +497,7 @@ otherwise, they are set flush right.
Str::copy(matter, mr.exp[2]);
Formats::source_code(OUT, wv, tab_stops_of_indentation, prefatory,
mr.exp[0], colouring, concluding_comment, (found == 0)?TRUE:FALSE,
FALSE, TRUE);
FALSE, TRUE, L->enable_hyperlinks);
LanguageMethods::reset_syntax_colouring(S->sect_language);
found++;
int defn = FALSE;

View file

@ -26,6 +26,7 @@ void HTMLFormat::create(void) {
METHOD_ADD(wf, PARAGRAPH_HEADING_FOR_MTID, HTMLFormat::paragraph_heading);
METHOD_ADD(wf, SOURCE_CODE_FOR_MTID, HTMLFormat::source_code);
METHOD_ADD(wf, INLINE_CODE_FOR_MTID, HTMLFormat::inline_code);
METHOD_ADD(wf, URL_FOR_MTID, HTMLFormat::url);
METHOD_ADD(wf, DISPLAY_LINE_FOR_MTID, HTMLFormat::display_line);
METHOD_ADD(wf, ITEM_FOR_MTID, HTMLFormat::item);
METHOD_ADD(wf, BAR_FOR_MTID, HTMLFormat::bar);
@ -282,7 +283,7 @@ void HTMLFormat::drop_initial_breadcrumbs(OUTPUT_STREAM, linked_list *crumbs, in
void HTMLFormat::source_code(weave_format *self, text_stream *OUT, weave_target *wv,
int tab_stops_of_indentation, text_stream *prefatory, text_stream *matter,
text_stream *colouring, text_stream *concluding_comment,
int starts, int finishes, int code_mode) {
int starts, int finishes, int code_mode, int linked) {
if (starts) {
if (Str::len(prefatory) > 0) {
HTML_OPEN_WITH("span", "class=\"definitionkeyword\"");
@ -293,12 +294,12 @@ void HTMLFormat::source_code(weave_format *self, text_stream *OUT, weave_target
match_results mr = Regexp::create_mr();
if (Regexp::match(&mr, matter, L"(%c*) from (%C+) *")) {
HTMLFormat::source_code(self, OUT, wv, 0, NULL, mr.exp[0], colouring,
concluding_comment, starts, FALSE, code_mode);
concluding_comment, starts, FALSE, code_mode, linked);
HTML_OPEN_WITH("span", "class=\"definitionkeyword\"");
WRITE(" from ");
HTML_CLOSE("span");
HTMLFormat::source_code(self, OUT, wv, 0, NULL, mr.exp[1], colouring,
concluding_comment, FALSE, finishes, code_mode);
concluding_comment, FALSE, finishes, code_mode, linked);
Regexp::dispose_of(&mr);
return;
}
@ -311,6 +312,21 @@ void HTMLFormat::source_code(weave_format *self, text_stream *OUT, weave_target
int current_colour = -1, colour_wanted = PLAIN_COLOUR;
for (int i=0; i < Str::len(matter); i++) {
colour_wanted = Str::get_at(colouring, i); @<Adjust code colour as necessary@>;
if ((linked) &&
((ACMESupport::text_at(matter, i, I"http://")) ||
(ACMESupport::text_at(matter, i, I"https://")))) {
TEMPORARY_TEXT(before);
Str::copy(before, matter); Str::truncate(before, i);
TEMPORARY_TEXT(after);
Str::substr(after, Str::at(matter, i), Str::end(matter));
match_results mr = Regexp::create_mr();
if (Regexp::match(&mr, after, L"(https*://%C+)(%c*)")) {
Formats::url(OUT, wv, mr.exp[0], mr.exp[0], TRUE);
i += Str::len(mr.exp[0]);
}
DISCARD_TEXT(before);
DISCARD_TEXT(after);
}
if (Str::get_at(matter, i) == '<') WRITE("&lt;");
else if (Str::get_at(matter, i) == '>') WRITE("&gt;");
else if (Str::get_at(matter, i) == '&') WRITE("&amp;");
@ -347,6 +363,14 @@ void HTMLFormat::inline_code(weave_format *self, text_stream *OUT, weave_target
}
}
@ =
void HTMLFormat::url(weave_format *self, text_stream *OUT, weave_target *wv,
text_stream *url, text_stream *content, int external) {
HTML::begin_link_with_class(OUT, (external)?I"external":I"internal", url);
WRITE("%S", content);
HTML::end_link(OUT);
}
@ =
void HTMLFormat::display_line(weave_format *self, text_stream *OUT, weave_target *wv,
text_stream *from) {

View file

@ -79,7 +79,7 @@ void PlainText::paragraph_heading(weave_format *self, text_stream *OUT, weave_ta
void PlainText::source_code(weave_format *self, text_stream *OUT, weave_target *wv,
int tab_stops_of_indentation, text_stream *prefatory, text_stream *matter,
text_stream *colouring, text_stream *concluding_comment, int starts,
int finishes, int code_mode) {
int finishes, int code_mode, int linked) {
if (starts) {
for (int i=0; i<tab_stops_of_indentation; i++)
WRITE(" ");

View file

@ -180,7 +180,7 @@ mode once again:
void TeX::source_code(weave_format *self, text_stream *OUT, weave_target *wv,
int tab_stops_of_indentation, text_stream *prefatory, text_stream *matter,
text_stream *colouring, text_stream *concluding_comment,
int starts, int finishes, int code_mode) {
int starts, int finishes, int code_mode, int linked) {
if (code_mode == FALSE) WRITE("\\smallskip\\par\\noindent");
if (starts) {
@<Weave a suitable horizontal advance for that many tab stops@>;

View file

@ -185,14 +185,14 @@ been syntax-coloured; there can also be some indentation, and perhaps even some
VMETHOD_TYPE(SOURCE_CODE_FOR_MTID, weave_format *wf, text_stream *OUT, weave_target *wv,
int tab_stops_of_indentation, text_stream *prefatory, text_stream *matter,
text_stream *colouring, text_stream *concluding_comment, int starts, int finishes,
int code_mode)
int code_mode, int linked)
void Formats::source_code(OUTPUT_STREAM, weave_target *wv, int tab_stops_of_indentation,
text_stream *prefatory, text_stream *matter, text_stream *colouring,
text_stream *concluding_comment, int starts, int finishes, int code_mode) {
text_stream *concluding_comment, int starts, int finishes, int code_mode, int linked) {
weave_format *wf = wv->format;
VMETHOD_CALL(wf, SOURCE_CODE_FOR_MTID, OUT, wv, tab_stops_of_indentation,
prefatory, matter, colouring, concluding_comment, starts, finishes, code_mode);
prefatory, matter, colouring, concluding_comment, starts, finishes, code_mode, linked);
}
@ More primitively, this method weaves a piece of code which has been coloured
@ -208,11 +208,28 @@ void Formats::source_fragment(OUTPUT_STREAM, weave_target *wv, text_stream *frag
VMETHOD_CALL(wf, INLINE_CODE_FOR_MTID, OUT, wv, TRUE);
TEMPORARY_TEXT(colouring);
for (int i=0; i< Str::len(fragment); i++) PUT_TO(colouring, EXTRACT_COLOUR);
Formats::source_code(OUT, wv, 0, I"", fragment, colouring, I"", FALSE, FALSE, TRUE);
Formats::source_code(OUT, wv, 0, I"", fragment, colouring, I"", FALSE, FALSE, TRUE, FALSE);
DISCARD_TEXT(colouring);
VMETHOD_CALL(wf, INLINE_CODE_FOR_MTID, OUT, wv, FALSE);
}
@ And this weaves a URL, hyperlinking it where possible.
@e URL_FOR_MTID
=
VMETHOD_TYPE(URL_FOR_MTID, weave_format *wf, text_stream *OUT, weave_target *wv,
text_stream *url, text_stream *content, int external)
void Formats::url(OUTPUT_STREAM, weave_target *wv, text_stream *url,
text_stream *content, int external) {
weave_format *wf = wv->format;
if (Methods::provided(wf->methods, URL_FOR_MTID)) {
VMETHOD_CALL(wf, URL_FOR_MTID, OUT, wv, url, content, external);
} else {
WRITE("%S", content);
}
}
@ This method produces the |>> Example| bits of example source text, really
a convenience for Inform 7 code commentary.
@ -396,6 +413,25 @@ void Formats::text_r(OUTPUT_STREAM, weave_target *wv, text_stream *id,
}
}
}
for (int i=0; i < Str::len(id); i++) {
if ((within == FALSE) &&
((ACMESupport::text_at(id, i, I"http://")) ||
(ACMESupport::text_at(id, i, I"https://")))) {
TEMPORARY_TEXT(before);
Str::copy(before, id); Str::truncate(before, i);
TEMPORARY_TEXT(after);
Str::substr(after, Str::at(id, i), Str::end(id));
match_results mr = Regexp::create_mr();
if (Regexp::match(&mr, after, L"(https*://%C+)(%c*)")) {
Formats::text_r(OUT, wv, before, within, comments);
Formats::url(OUT, wv, mr.exp[0], mr.exp[0], TRUE);
Formats::text_r(OUT, wv, mr.exp[1], within, comments);
return;
}
DISCARD_TEXT(before);
DISCARD_TEXT(after);
}
}
if (within) {
Formats::source_fragment(OUT, wv, id);
} else {

View file

@ -360,6 +360,27 @@ For example,
=
...which is essential in order to restore the state of
=
@ URLs in the web are automatically recognised and a weave to HTML will
make them into links. For example:
= (text)
For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships
=
For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships
Note that URLs are considered to continue to the next white space, so don't
end them with full stops or commas.
URLs will also be recognised in any text extract marked as |hyperlinked|.
For example,
= (text)
Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes
=
produces:
= (hyperlinked text)
Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes
=
@ Pictures must be in PNG, JPG or PDF format and can be included with lines
like:
= (text as Inweb)

View file

@ -623,6 +623,8 @@ or semver, for the web. For example, if the Contents included:
then the semver would be |6.2.12-alpha.1+6Q26|. This is accessible within
the web as the variable |Semantic Version Number|.
For more on semvers, see: https://semver.org
@ A special advancing mechanism exists to update build numbers and dates.
Running Inweb with |-advance-build W| checks the build date for web |W|:
if it differs from today, then it is changed to today, and the build code

File diff suppressed because it is too large Load diff

View file

@ -517,7 +517,7 @@ source:
<p class="inwebparagraph"></p>
<p class="endnote">The function Main::error_in_web is used in 1/cnf (<a href="1-cnf.html#SP5">&#167;5</a>), 2/tp (<a href="2-tp.html#SP1_1_6_3">&#167;1.1.6.3</a>, <a href="2-tp.html#SP1_1_6_4">&#167;1.1.6.4</a>, <a href="2-tp.html#SP1_1_6_7">&#167;1.1.6.7</a>, <a href="2-tp.html#SP1_1_6_7_1">&#167;1.1.6.7.1</a>, <a href="2-tp.html#SP1_1_6_5_1">&#167;1.1.6.5.1</a>, <a href="2-tp.html#SP1_1_6_5_1_1">&#167;1.1.6.5.1.1</a>, <a href="2-tp.html#SP1_1_6_5_1_2">&#167;1.1.6.5.1.2</a>, <a href="2-tp.html#SP1_1_6_5_1_3">&#167;1.1.6.5.1.3</a>, <a href="2-tp.html#SP1_1_6_5_1_4">&#167;1.1.6.5.1.4</a>, <a href="2-tp.html#SP1_1_6_5_1_7">&#167;1.1.6.5.1.7</a>, <a href="2-tp.html#SP3">&#167;3</a>), 2/ec (<a href="2-ec.html#SP3_1">&#167;3.1</a>, <a href="2-ec.html#SP3_2">&#167;3.2</a>, <a href="2-ec.html#SP3_3">&#167;3.3</a>), 3/ta (<a href="3-ta.html#SP4_1">&#167;4.1</a>), 3/tw (<a href="3-tw.html#SP1_3_3_1_8_4">&#167;1.3.3.1.8.4</a>), 3/tt (<a href="3-tt.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="3-tt.html#SP3_1">&#167;3.1</a>), 4/lm (<a href="4-lm.html#SP8">&#167;8</a>), 4/cl (<a href="4-cl.html#SP2">&#167;2</a>, <a href="4-cl.html#SP2_1">&#167;2.1</a>, <a href="4-cl.html#SP2_4_2_1">&#167;2.4.2.1</a>, <a href="4-cl.html#SP2_4_2_5">&#167;2.4.2.5</a>, <a href="4-cl.html#SP10">&#167;10</a>).</p>
<p class="endnote">The function Main::error_in_web is used in 1/cnf (<a href="1-cnf.html#SP5">&#167;5</a>), 2/tp (<a href="2-tp.html#SP1_1_6_3">&#167;1.1.6.3</a>, <a href="2-tp.html#SP1_1_6_4">&#167;1.1.6.4</a>, <a href="2-tp.html#SP1_1_6_7">&#167;1.1.6.7</a>, <a href="2-tp.html#SP1_1_6_7_1">&#167;1.1.6.7.1</a>, <a href="2-tp.html#SP1_1_6_5_1">&#167;1.1.6.5.1</a>, <a href="2-tp.html#SP1_1_6_5_1_1">&#167;1.1.6.5.1.1</a>, <a href="2-tp.html#SP1_1_6_5_1_2">&#167;1.1.6.5.1.2</a>, <a href="2-tp.html#SP1_1_6_5_1_3">&#167;1.1.6.5.1.3</a>, <a href="2-tp.html#SP1_1_6_5_1_4">&#167;1.1.6.5.1.4</a>, <a href="2-tp.html#SP1_1_6_5_1_7">&#167;1.1.6.5.1.7</a>, <a href="2-tp.html#SP3">&#167;3</a>), 2/ec (<a href="2-ec.html#SP3_1">&#167;3.1</a>, <a href="2-ec.html#SP3_2">&#167;3.2</a>, <a href="2-ec.html#SP3_3">&#167;3.3</a>), 3/ta (<a href="3-ta.html#SP4_1">&#167;4.1</a>), 3/tt (<a href="3-tt.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="3-tt.html#SP3_1">&#167;3.1</a>), 4/lm (<a href="4-lm.html#SP8">&#167;8</a>), 4/cl (<a href="4-cl.html#SP2">&#167;2</a>, <a href="4-cl.html#SP2_1">&#167;2.1</a>, <a href="4-cl.html#SP2_4_2_1">&#167;2.4.2.1</a>, <a href="4-cl.html#SP2_4_2_5">&#167;2.4.2.5</a>, <a href="4-cl.html#SP10">&#167;10</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="1-bsc.html">Back to 'Basics'</a></li><li><a href="1-cnf.html">Continue with 'Configuration'</a></li></ul><hr class="tocbar">

View file

@ -331,7 +331,7 @@ from each other then this routine will lock up into an infinite loop.
<p class="inwebparagraph"></p>
<p class="endnote">The function Patterns::obtain_filename is used in <a href="#SP6">&#167;6</a>, 3/ts (<a href="3-ts.html#SP3">&#167;3</a>), 3/ti (<a href="3-ti.html#SP1">&#167;1</a>, <a href="3-ti.html#SP2">&#167;2</a>, <a href="3-ti.html#SP2_1_3">&#167;2.1.3</a>, <a href="3-ti.html#SP5_1">&#167;5.1</a>), 5/tf (<a href="5-tf.html#SP3_1">&#167;3.1</a>), 5/hf (<a href="5-hf.html#SP6">&#167;6</a>, <a href="5-hf.html#SP9">&#167;9</a>, <a href="5-hf.html#SP27">&#167;27</a>).</p>
<p class="endnote">The function Patterns::obtain_filename is used in <a href="#SP6">&#167;6</a>, 3/ts (<a href="3-ts.html#SP3">&#167;3</a>), 3/ti (<a href="3-ti.html#SP1">&#167;1</a>, <a href="3-ti.html#SP2">&#167;2</a>, <a href="3-ti.html#SP2_1_3">&#167;2.1.3</a>, <a href="3-ti.html#SP5_1">&#167;5.1</a>), 5/tf (<a href="5-tf.html#SP3_1">&#167;3.1</a>), 5/hf (<a href="5-hf.html#SP6">&#167;6</a>, <a href="5-hf.html#SP9">&#167;9</a>, <a href="5-hf.html#SP28">&#167;28</a>).</p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b>When we eventually want to deal with the <code class="display"><span class="extract">use P</span></code> commands, which call
for payloads to be copied into weave, we make good use of the above:
@ -381,7 +381,7 @@ for payloads to be copied into weave, we make good use of the above:
<p class="inwebparagraph"></p>
<p class="endnote">The function Patterns::copy_file_into_weave is used in <a href="#SP6">&#167;6</a>, 5/hf (<a href="5-hf.html#SP6">&#167;6</a>, <a href="5-hf.html#SP9">&#167;9</a>, <a href="5-hf.html#SP15">&#167;15</a>).</p>
<p class="endnote">The function Patterns::copy_file_into_weave is used in <a href="#SP6">&#167;6</a>, 5/hf (<a href="5-hf.html#SP6">&#167;6</a>, <a href="5-hf.html#SP9">&#167;9</a>, <a href="5-hf.html#SP16">&#167;16</a>).</p>
<p class="endnote">The function Patterns::copy_up_file_into_weave is used in <a href="#SP6">&#167;6</a>, 5/hf (<a href="5-hf.html#SP6">&#167;6</a>, <a href="5-hf.html#SP9">&#167;9</a>).</p>

View file

@ -52,6 +52,7 @@ correspond to one of these:
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">command_code</span><span class="plain">; </span><span class="comment"> used only for <code class="display"><span class="extract">COMMAND_LCAT</span></code> lines: a <code class="display"><span class="extract">*_CMD</span></code> value</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">default_defn</span><span class="plain">; </span><span class="comment"> used only for <code class="display"><span class="extract">BEGIN_DEFINITION_LCAT</span></code> lines</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">plainer</span><span class="plain">; </span><span class="comment"> used only for <code class="display"><span class="extract">BEGIN_CODE_LCAT</span></code> lines: suppresses box</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">enable_hyperlinks</span><span class="plain">; </span><span class="comment"> used only for <code class="display"><span class="extract">CODE_BODY_LCAT</span></code> lines: link URLs in weave</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">programming_language</span><span class="plain"> *</span><span class="identifier">colour_as</span><span class="plain">; </span><span class="comment"> used only for <code class="display"><span class="extract">TEXT_EXTRACT_LCAT</span></code> lines</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">is_commentary</span><span class="plain">; </span><span class="comment"> flag</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">function</span><span class="plain"> *</span><span class="identifier">function_defined</span><span class="plain">; </span><span class="comment"> if any C-like function is defined on this line</span>
@ -84,6 +85,7 @@ correspond to one of these:
<span class="identifier">sl</span><span class="plain">-&gt;</span><span class="element">command_code</span><span class="plain"> = </span><span class="constant">NO_CMD</span><span class="plain">;</span>
<span class="identifier">sl</span><span class="plain">-&gt;</span><span class="element">default_defn</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="identifier">sl</span><span class="plain">-&gt;</span><span class="element">plainer</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="identifier">sl</span><span class="plain">-&gt;</span><span class="element">enable_hyperlinks</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="identifier">sl</span><span class="plain">-&gt;</span><span class="element">colour_as</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">sl</span><span class="plain">-&gt;</span><span class="element">is_commentary</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="identifier">sl</span><span class="plain">-&gt;</span><span class="element">function_defined</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>

View file

@ -72,7 +72,9 @@ markup syntax, and trying to detect incorrect uses of one within the other.
<pre class="displaydefn">
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">comment_mode</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">, </span><span class="identifier">extract_mode</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_lcat_for_body</span><span class="plain"> = </span><span class="constant">NO_LCAT</span><span class="plain">, </span><span class="identifier">code_plainness_for_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_lcat_for_body</span><span class="plain"> = </span><span class="constant">NO_LCAT</span><span class="plain">,</span>
<span class="identifier">code_plainness_for_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">,</span>
<span class="identifier">hyperlink_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="reserved">programming_language</span><span class="plain"> *</span><span class="identifier">code_pl_for_body</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">before_bar</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">next_par_number</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
@ -542,6 +544,7 @@ handling. We'll call these "paragraph macros".
<span class="identifier">code_lcat_for_body</span><span class="plain"> = </span><span class="constant">CODE_BODY_LCAT</span><span class="plain">; </span><span class="comment"> code follows on subsequent lines</span>
<span class="identifier">code_pl_for_body</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">code_plainness_for_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="identifier">hyperlink_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">para_macro_name</span><span class="plain">);</span>
<span class="reserved">continue</span><span class="plain">;</span>
<span class="plain">}</span>
@ -664,6 +667,7 @@ division in the current section.
<span class="functiontext">Main::error_in_web</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"unknown material after '='"</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">code_plainness_for_body</span><span class="plain"> = </span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">plainer</span><span class="plain">;</span>
<span class="identifier">hyperlink_body</span><span class="plain"> = </span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">enable_hyperlinks</span><span class="plain">;</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr2</span><span class="plain">);</span>
<span class="reserved">continue</span><span class="plain">;</span>
@ -679,9 +683,20 @@ division in the current section.
<pre class="displaydefn">
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq</span><span class="plain">(</span><span class="identifier">mr2</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">I</span><span class="string">"undisplayed"</span><span class="plain">)) </span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">plainer</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">mr2</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0]) &gt; </span><span class="constant">0</span><span class="plain">)</span>
<span class="functiontext">Main::error_in_web</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"only 'undisplayed' can precede 'text' here"</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">);</span>
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr3</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
<span class="reserved">while</span><span class="plain"> (</span><span class="constant">TRUE</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr3</span><span class="plain">, </span><span class="identifier">mr2</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">L</span><span class="string">" *(%C+) *(%c*?)"</span><span class="plain">)) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq</span><span class="plain">(</span><span class="identifier">mr3</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">I</span><span class="string">"undisplayed"</span><span class="plain">)) </span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">plainer</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq</span><span class="plain">(</span><span class="identifier">mr3</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">I</span><span class="string">"hyperlinked"</span><span class="plain">)) </span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">enable_hyperlinks</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> {</span>
<span class="functiontext">Main::error_in_web</span><span class="plain">(</span>
<span class="identifier">I</span><span class="string">"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here"</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">break</span><span class="plain">;</span>
<span class="functiontext">Str::clear</span><span class="plain">(</span><span class="identifier">mr2</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0]);</span>
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">mr2</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">mr3</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[1]);</span>
<span class="plain">}</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr3</span><span class="plain">);</span>
</pre>
<p class="inwebparagraph"></p>
@ -898,6 +913,7 @@ follows:
<span class="identifier">code_pl_for_body</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">comment_mode</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="identifier">code_plainness_for_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="identifier">hyperlink_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
@ -1156,6 +1172,7 @@ CWEB, but is needed for languages which don't allow multi-line definitions.)
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">category</span><span class="plain"> != </span><span class="constant">BEGIN_DEFINITION_LCAT</span><span class="plain">) &amp;&amp; (</span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">category</span><span class="plain"> != </span><span class="constant">COMMAND_LCAT</span><span class="plain">)) {</span>
<span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">category</span><span class="plain"> = </span><span class="identifier">code_lcat_for_body</span><span class="plain">;</span>
<span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">plainer</span><span class="plain"> = </span><span class="identifier">code_plainness_for_body</span><span class="plain">;</span>
<span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">enable_hyperlinks</span><span class="plain"> = </span><span class="identifier">hyperlink_body</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">category</span><span class="plain"> == </span><span class="constant">TEXT_EXTRACT_LCAT</span><span class="plain">) </span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">colour_as</span><span class="plain"> = </span><span class="identifier">code_pl_for_body</span><span class="plain">;</span>
<span class="plain">}</span>

View file

@ -459,7 +459,7 @@ tangled for.
<p class="inwebparagraph"></p>
<p class="endnote">The function Reader::woven_folder is used in 1/ptt (<a href="1-ptt.html#SP7">&#167;7</a>), 3/ts (<a href="3-ts.html#SP2_2">&#167;2.2</a>), 3/ti (<a href="3-ti.html#SP5_4">&#167;5.4</a>), 5/hf (<a href="5-hf.html#SP27">&#167;27</a>).</p>
<p class="endnote">The function Reader::woven_folder is used in 1/ptt (<a href="1-ptt.html#SP7">&#167;7</a>), 3/ts (<a href="3-ts.html#SP2_2">&#167;2.2</a>), 3/ti (<a href="3-ti.html#SP5_4">&#167;5.4</a>), 5/hf (<a href="5-hf.html#SP28">&#167;28</a>).</p>
<p class="endnote">The function Reader::tangled_folder is used in 1/pc (<a href="1-pc.html#SP7_4_2">&#167;7.4.2</a>), 3/tt (<a href="3-tt.html#SP1_2">&#167;1.2</a>), 4/is (<a href="4-is.html#SP13">&#167;13</a>).</p>

View file

@ -51,7 +51,7 @@ to call the fuller indexing service if need be, using <code class="display"><spa
<p class="inwebparagraph"></p>
<p class="endnote">The function Indexer::cover_sheet_maker is used in <a href="#SP2_1_1">&#167;2.1.1</a>, 3/tw (<a href="3-tw.html#SP1_2">&#167;1.2</a>, <a href="3-tw.html#SP1_4">&#167;1.4</a>), 5/hf (<a href="5-hf.html#SP6">&#167;6</a>, <a href="5-hf.html#SP25">&#167;25</a>).</p>
<p class="endnote">The function Indexer::cover_sheet_maker is used in <a href="#SP2_1_1">&#167;2.1.1</a>, 3/tw (<a href="3-tw.html#SP1_2">&#167;1.2</a>, <a href="3-tw.html#SP1_4">&#167;1.4</a>), 5/hf (<a href="5-hf.html#SP6">&#167;6</a>, <a href="5-hf.html#SP26">&#167;26</a>).</p>
<p class="inwebparagraph"><a id="SP1_1"></a><b>&#167;1.1. </b>The cover-sheet-maker has the ability to weave only the top half, or only
the bottom half, of the template; they are divided by the marker <code class="display"><span class="extract">[[Code]]</span></code>.

View file

@ -605,14 +605,11 @@ in the source is set indented in code style.
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[1]);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">original</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">, </span><span class="constant">PLAIN_COLOUR</span><span class="plain">);</span>
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">1</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">original</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">1</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">original</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">,</span>
<span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="identifier">enable_hyperlinks</span><span class="plain">);</span>
<span class="functiontext">Formats::text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">original</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_inweb_errors</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) {</span>
<span class="functiontext">Main::error_in_web</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Old-style pipes here"</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">);</span>
<span class="identifier">no_inweb_errors</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">continue</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">state</span><span class="plain">-&gt;</span><span class="element">kind_of_material</span><span class="plain"> != </span><span class="constant">REGULAR_MATERIAL</span><span class="plain">) {</span>
<span class="functiontext">Formats::change_material</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">state</span><span class="plain">-&gt;</span><span class="element">kind_of_material</span><span class="plain">, </span><span class="constant">REGULAR_MATERIAL</span><span class="plain">,</span>
@ -666,7 +663,8 @@ and macro usage is rendered differently.
<span class="plain">}</span>
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="identifier">prefatory</span><span class="plain">,</span>
<span class="identifier">matter</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">, (</span><span class="identifier">found</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">)?</span><span class="identifier">TRUE:FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
<span class="identifier">matter</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">, (</span><span class="identifier">found</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">)?</span><span class="identifier">TRUE:FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">,</span>
<span class="constant">TRUE</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">enable_hyperlinks</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">concluding_comment</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">prefatory</span><span class="plain">);</span>
@ -846,7 +844,7 @@ otherwise, they are set flush right.
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[2]);</span>
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="identifier">prefatory</span><span class="plain">,</span>
<span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">, (</span><span class="identifier">found</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">)?</span><span class="identifier">TRUE:FALSE</span><span class="plain">,</span>
<span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
<span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">-&gt;</span><span class="element">enable_hyperlinks</span><span class="plain">);</span>
<span class="functiontext">LanguageMethods::reset_syntax_colouring</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-&gt;</span><span class="element">sect_language</span><span class="plain">);</span>
<span class="identifier">found</span><span class="plain">++;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">defn</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>

View file

@ -280,7 +280,7 @@ files to crash Inweb.)
<p class="endnote">The function ACMESupport::parse_comment is used in <a href="#SP1">&#167;1</a>.</p>
<p class="endnote">The function ACMESupport::text_at is used in 4/tp (<a href="4-tp.html#SP2_2">&#167;2.2</a>, <a href="4-tp.html#SP3">&#167;3</a>, <a href="4-tp.html#SP5">&#167;5</a>), 5/wf (<a href="5-wf.html#SP22">&#167;22</a>).</p>
<p class="endnote">The function ACMESupport::text_at is used in 4/tp (<a href="4-tp.html#SP2_2">&#167;2.2</a>, <a href="4-tp.html#SP3">&#167;3</a>, <a href="4-tp.html#SP5">&#167;5</a>), 5/wf (<a href="5-wf.html#SP23">&#167;23</a>), 5/hf (<a href="5-hf.html#SP10">&#167;10</a>).</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>This is here so that tangling the Standard Rules extension doesn't insert
a spurious comment betraying Inweb's involvement in the process.

View file

@ -26,7 +26,7 @@
<!--Weave of 'HTML Formats' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#5">Chapter 5: Formats</a></li><li><b>HTML Formats</b></li></ul><p class="purpose">To provide for weaving into HTML and into EPUB books.</p>
<ul class="toc"><li><a href="#SP2">&#167;2. Current state</a></li><li><a href="#SP6">&#167;6. Methods</a></li><li><a href="#SP27">&#167;27. EPUB-only methods</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP2">&#167;2. Current state</a></li><li><a href="#SP6">&#167;6. Methods</a></li><li><a href="#SP28">&#167;28. EPUB-only methods</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b></p>
@ -84,6 +84,7 @@
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">PARAGRAPH_HEADING_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::paragraph_heading</span><span class="plain">);</span>
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">SOURCE_CODE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::source_code</span><span class="plain">);</span>
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">INLINE_CODE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::inline_code</span><span class="plain">);</span>
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">URL_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::url</span><span class="plain">);</span>
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">DISPLAY_LINE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::display_line</span><span class="plain">);</span>
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">ITEM_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::item</span><span class="plain">);</span>
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">BAR_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::bar</span><span class="plain">);</span>
@ -147,13 +148,13 @@ but in fact that's fine here.)
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::p is used in <a href="#SP7">&#167;7</a>, <a href="#SP9">&#167;9</a>, <a href="#SP11">&#167;11</a>, <a href="#SP12">&#167;12</a>, <a href="#SP18">&#167;18</a>, <a href="#SP19">&#167;19</a>, <a href="#SP21">&#167;21</a>, <a href="#SP22">&#167;22</a>.</p>
<p class="endnote">The function HTMLFormat::p is used in <a href="#SP7">&#167;7</a>, <a href="#SP9">&#167;9</a>, <a href="#SP11">&#167;11</a>, <a href="#SP13">&#167;13</a>, <a href="#SP19">&#167;19</a>, <a href="#SP20">&#167;20</a>, <a href="#SP22">&#167;22</a>, <a href="#SP23">&#167;23</a>.</p>
<p class="endnote">The function HTMLFormat::cp is used in <a href="#SP4">&#167;4</a>, <a href="#SP7">&#167;7</a>, <a href="#SP12">&#167;12</a>, <a href="#SP21">&#167;21</a>.</p>
<p class="endnote">The function HTMLFormat::cp is used in <a href="#SP4">&#167;4</a>, <a href="#SP7">&#167;7</a>, <a href="#SP13">&#167;13</a>, <a href="#SP22">&#167;22</a>.</p>
<p class="endnote">The function HTMLFormat::pre is used in <a href="#SP19">&#167;19</a>.</p>
<p class="endnote">The function HTMLFormat::pre is used in <a href="#SP20">&#167;20</a>.</p>
<p class="endnote">The function HTMLFormat::cpre is used in <a href="#SP4">&#167;4</a>, <a href="#SP19">&#167;19</a>.</p>
<p class="endnote">The function HTMLFormat::cpre is used in <a href="#SP4">&#167;4</a>, <a href="#SP20">&#167;20</a>.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Depth 1 means "inside a list entry"; depth 2, "inside an entry of a list
which is itself inside a list entry"; and so on.
@ -185,7 +186,7 @@ which is itself inside a list entry"; and so on.
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::go_to_depth is used in <a href="#SP4">&#167;4</a>, <a href="#SP13">&#167;13</a>.</p>
<p class="endnote">The function HTMLFormat::go_to_depth is used in <a href="#SP4">&#167;4</a>, <a href="#SP14">&#167;14</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>The following generically gets us out of whatever we're currently into:
</p>
@ -202,7 +203,7 @@ which is itself inside a list entry"; and so on.
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::exit_current_paragraph is used in <a href="#SP3">&#167;3</a>, <a href="#SP7">&#167;7</a>, <a href="#SP8">&#167;8</a>, <a href="#SP9">&#167;9</a>, <a href="#SP12">&#167;12</a>, <a href="#SP14">&#167;14</a>, <a href="#SP15">&#167;15</a>, <a href="#SP17">&#167;17</a>, <a href="#SP18">&#167;18</a>, <a href="#SP19">&#167;19</a>, <a href="#SP21">&#167;21</a>, <a href="#SP25">&#167;25</a>.</p>
<p class="endnote">The function HTMLFormat::exit_current_paragraph is used in <a href="#SP3">&#167;3</a>, <a href="#SP7">&#167;7</a>, <a href="#SP8">&#167;8</a>, <a href="#SP9">&#167;9</a>, <a href="#SP13">&#167;13</a>, <a href="#SP15">&#167;15</a>, <a href="#SP16">&#167;16</a>, <a href="#SP18">&#167;18</a>, <a href="#SP19">&#167;19</a>, <a href="#SP20">&#167;20</a>, <a href="#SP22">&#167;22</a>, <a href="#SP26">&#167;26</a>.</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>"Breadcrumbs" are the chain of links in a horizontal list at the top of
the page, and this drops one.
@ -409,7 +410,7 @@ the page, and this drops one.
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::source_code</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">,</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">) {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">starts</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">prefatory</span><span class="plain">) &gt; </span><span class="constant">0</span><span class="plain">) {</span>
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"definitionkeyword\""</span><span class="plain">);</span>
@ -420,12 +421,12 @@ the page, and this drops one.
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%c*) from (%C+) *"</span><span class="plain">)) {</span>
<span class="functiontext">HTMLFormat::source_code</span><span class="plain">(</span><span class="identifier">self</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">colouring</span><span class="plain">,</span>
<span class="identifier">concluding_comment</span><span class="plain">, </span><span class="identifier">starts</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">);</span>
<span class="identifier">concluding_comment</span><span class="plain">, </span><span class="identifier">starts</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="identifier">linked</span><span class="plain">);</span>
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"definitionkeyword\""</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" from "</span><span class="plain">);</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::source_code</span><span class="plain">(</span><span class="identifier">self</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[1], </span><span class="identifier">colouring</span><span class="plain">,</span>
<span class="identifier">concluding_comment</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">finishes</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">);</span>
<span class="identifier">concluding_comment</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">finishes</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="identifier">linked</span><span class="plain">);</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="plain">}</span>
@ -438,17 +439,32 @@ the page, and this drops one.
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">current_colour</span><span class="plain"> = -1, </span><span class="identifier">colour_wanted</span><span class="plain"> = </span><span class="constant">PLAIN_COLOUR</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"> &lt; </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="identifier">colour_wanted</span><span class="plain"> = </span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">); </span>&lt;<span class="cwebmacro">Adjust code colour as necessary</span> <span class="cwebmacronumber">10.1</span>&gt;<span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'&lt;'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&amp;lt;"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'&gt;'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&amp;gt;"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'&amp;'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&amp;amp;"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%c"</span><span class="plain">, </span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_colour</span><span class="plain"> &gt;= </span><span class="constant">0</span><span class="plain">) </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
<span class="identifier">current_colour</span><span class="plain"> = -1;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">finishes</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">concluding_comment</span><span class="plain">) &gt; </span><span class="constant">0</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (!</span><span class="identifier">starts</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"comment\""</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">linked</span><span class="plain">) &amp;&amp;</span>
<span class="plain">((</span><span class="functiontext">ACMESupport::text_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"http:</span><span class="comment">")) <code class="display"></code></span>
<span class="string">(ACMESupport::text_at(matter, i, I"</span><span class="identifier">https:</span><span class="comment">")))) {</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">);</span>
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">); </span><span class="functiontext">Str::truncate</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">);</span>
<span class="functiontext">Str::substr</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">, </span><span class="functiontext">Str::at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">), </span><span class="functiontext">Str::end</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">));</span>
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">after</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(https*:</span><span class="comment">%C+)(%c*)")) {</span>
<span class="string">Formats::url(OUT, wv, mr.exp[0], mr.exp[0], TRUE);</span>
<span class="string">i += Str::len(mr.exp[0]);</span>
<span class="string">}</span>
<span class="string">DISCARD_TEXT(before);</span>
<span class="string">DISCARD_TEXT(after);</span>
<span class="string">}</span>
<span class="string">if (Str::get_at(matter, i) == '&lt;') WRITE("</span><span class="plain">&amp;</span><span class="identifier">lt</span><span class="plain">;</span><span class="string">");</span>
<span class="string">else if (Str::get_at(matter, i) == '&gt;') WRITE("</span><span class="plain">&amp;</span><span class="identifier">gt</span><span class="plain">;</span><span class="string">");</span>
<span class="string">else if (Str::get_at(matter, i) == '&amp;') WRITE("</span><span class="plain">&amp;</span><span class="identifier">amp</span><span class="plain">;</span><span class="string">");</span>
<span class="string">else WRITE("</span><span class="plain">%</span><span class="identifier">c</span><span class="string">", Str::get_at(matter, i));</span>
<span class="string">}</span>
<span class="string">if (current_colour &gt;= 0) HTML_CLOSE("</span><span class="identifier">span</span><span class="string">");</span>
<span class="string">current_colour = -1;</span>
<span class="string">if (finishes) {</span>
<span class="string">if (Str::len(concluding_comment) &gt; 0) {</span>
<span class="string">if (!starts) WRITE("</span><span class="plain"> </span><span class="string">");</span>
<span class="string">HTML_OPEN_WITH("</span><span class="identifier">span</span><span class="string">", "</span><span class="identifier">class</span><span class="plain">=\</span><span class="string">"comment\""</span><span class="plain">);</span>
<span class="functiontext">Formats::text_comment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">);</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
<span class="plain">}</span>
@ -498,6 +514,21 @@ the page, and this drops one.
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::url</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">url</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">external</span><span class="plain">) {</span>
<span class="functiontext">HTML::begin_link_with_class</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="identifier">external</span><span class="plain">)?</span><span class="identifier">I</span><span class="string">"external"</span><span class="plain">:</span><span class="identifier">I</span><span class="string">"internal"</span><span class="plain">, </span><span class="identifier">url</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">);</span>
<span class="functiontext">HTML::end_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::url is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::display_line</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">) {</span>
@ -514,7 +545,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::display_line is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. </b></p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::item</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain">,</span>
@ -530,7 +561,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::item is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. </b></p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::bar</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">) {</span>
@ -543,7 +574,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::bar is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. </b></p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::figure</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
@ -565,7 +596,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::figure is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. </b></p>
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::para_macro</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
@ -587,7 +618,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::para_macro is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. </b></p>
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::pagebreak</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">) {</span>
@ -599,7 +630,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::pagebreak is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. </b></p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::blank_line</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
@ -619,7 +650,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::blank_line is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. </b></p>
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::change_material</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
@ -695,7 +726,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::change_material is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. </b></p>
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::change_colour</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
@ -723,7 +754,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::change_colour is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. </b></p>
<p class="inwebparagraph"><a id="SP22"></a><b>&#167;22. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::endnote</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">end</span><span class="plain">) {</span>
@ -740,7 +771,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::endnote is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP22"></a><b>&#167;22. </b></p>
<p class="inwebparagraph"><a id="SP23"></a><b>&#167;23. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::commentary_text</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
@ -768,7 +799,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::commentary_text is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP23"></a><b>&#167;23. </b></p>
<p class="inwebparagraph"><a id="SP24"></a><b>&#167;24. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::locale</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
@ -789,7 +820,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::locale is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP24"></a><b>&#167;24. </b></p>
<p class="inwebparagraph"><a id="SP25"></a><b>&#167;25. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::xref</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">,</span>
@ -815,9 +846,9 @@ the page, and this drops one.
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::xref is used in <a href="#SP8">&#167;8</a>, <a href="#SP9">&#167;9</a>, <a href="#SP23">&#167;23</a>.</p>
<p class="endnote">The function HTMLFormat::xref is used in <a href="#SP8">&#167;8</a>, <a href="#SP9">&#167;9</a>, <a href="#SP24">&#167;24</a>.</p>
<p class="inwebparagraph"><a id="SP25"></a><b>&#167;25. </b></p>
<p class="inwebparagraph"><a id="SP26"></a><b>&#167;26. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::tail</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
@ -871,7 +902,7 @@ the page, and this drops one.
<p class="endnote">The function HTMLFormat::tail is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP26"></a><b>&#167;26. </b></p>
<p class="inwebparagraph"><a id="SP27"></a><b>&#167;27. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::sref</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
@ -887,9 +918,9 @@ the page, and this drops one.
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::sref is used in <a href="#SP25">&#167;25</a>.</p>
<p class="endnote">The function HTMLFormat::sref is used in <a href="#SP26">&#167;26</a>.</p>
<p class="inwebparagraph"><a id="SP27"></a><b>&#167;27. EPUB-only methods. </b></p>
<p class="inwebparagraph"><a id="SP28"></a><b>&#167;28. EPUB-only methods. </b></p>
<pre class="display">
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">HTMLFormat::begin_weaving_EPUB</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain">, </span><span class="reserved">web</span><span class="plain"> *</span><span class="identifier">W</span><span class="plain">, </span><span class="reserved">weave_pattern</span><span class="plain"> *</span><span class="identifier">pattern</span><span class="plain">) {</span>

View file

@ -144,7 +144,7 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">PlainText::source_code</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">,</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">) {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">starts</span><span class="plain">) {</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">tab_stops_of_indentation</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++)</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>

View file

@ -304,7 +304,7 @@ mode once again:
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">TeX::source_code</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">,</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">) {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">code_mode</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\\smallskip\\par\\noindent"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">starts</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Weave a suitable horizontal advance for that many tab stops</span> <span class="cwebmacronumber">8.1</span>&gt;<span class="plain">;</span>
@ -857,7 +857,7 @@ To do this, the weaver calls the following.
<p class="inwebparagraph"></p>
<p class="endnote">The function TeX::remove_math_mode is used in 5/wf (<a href="5-wf.html#SP23">&#167;23</a>).</p>
<p class="endnote">The function TeX::remove_math_mode is used in 5/wf (<a href="5-wf.html#SP24">&#167;24</a>).</p>
<p class="endnote">The function TeX::remove_math_mode_range is used in <a href="#SP28_1">&#167;28.1</a>, <a href="#SP28_2">&#167;28.2</a>, <a href="#SP28_3">&#167;28.3</a>.</p>

View file

@ -26,7 +26,7 @@
<!--Weave of 'Weave Formats' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#5">Chapter 5: Formats</a></li><li><b>Weave Formats</b></li></ul><p class="purpose">To characterise the different weaving output formats (text, typeset, web and so on).</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Formats</a></li><li><a href="#SP3">&#167;3. Creation</a></li><li><a href="#SP4">&#167;4. Methods</a></li><li><a href="#SP28">&#167;28. Post-processing</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. Formats</a></li><li><a href="#SP3">&#167;3. Creation</a></li><li><a href="#SP4">&#167;4. Methods</a></li><li><a href="#SP29">&#167;29. Post-processing</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Formats. </b>Exactly as in the previous chapter, each format expresses its behaviour
through optional method calls.
@ -61,7 +61,7 @@ through optional method calls.
<p class="endnote">The function Formats::create_weave_format is used in 5/ptf (<a href="5-ptf.html#SP1">&#167;1</a>), 5/tf (<a href="5-tf.html#SP1_1">&#167;1.1</a>, <a href="5-tf.html#SP1_2">&#167;1.2</a>, <a href="5-tf.html#SP1_3">&#167;1.3</a>), 5/hf (<a href="5-hf.html#SP1_1">&#167;1.1</a>, <a href="5-hf.html#SP1_2">&#167;1.2</a>).</p>
<p class="endnote">The function Formats::find_by_name is used in <a href="#SP30">&#167;30</a>, 1/ptt (<a href="1-ptt.html#SP3_2">&#167;3.2</a>).</p>
<p class="endnote">The function Formats::find_by_name is used in <a href="#SP31">&#167;31</a>, 1/ptt (<a href="1-ptt.html#SP3_2">&#167;3.2</a>).</p>
<p class="endnote">The structure weave_format is accessed in 3/ts and here.</p>
@ -301,14 +301,14 @@ been syntax-coloured; there can also be some indentation, and perhaps even some
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">SOURCE_CODE_FOR_MTID</span><span class="plain">, </span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">,</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">)</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">)</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">,</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">,</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">) {</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">) {</span>
<span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">format</span><span class="plain">;</span>
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">SOURCE_CODE_FOR_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">,</span>
<span class="identifier">prefatory</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="identifier">starts</span><span class="plain">, </span><span class="identifier">finishes</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">);</span>
<span class="identifier">prefatory</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="identifier">starts</span><span class="plain">, </span><span class="identifier">finishes</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="identifier">linked</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
@ -333,7 +333,7 @@ drably in a uniform <code class="display"><span class="extract">EXTRACT_COLOUR</
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">INLINE_CODE_FOR_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt; </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">fragment</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">, </span><span class="constant">EXTRACT_COLOUR</span><span class="plain">);</span>
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">fragment</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">fragment</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">INLINE_CODE_FOR_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
<span class="plain">}</span>
@ -341,9 +341,35 @@ drably in a uniform <code class="display"><span class="extract">EXTRACT_COLOUR</
<p class="inwebparagraph"></p>
<p class="endnote">The function Formats::source_fragment is used in <a href="#SP22">&#167;22</a>.</p>
<p class="endnote">The function Formats::source_fragment is used in <a href="#SP23">&#167;23</a>.</p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. </b>This method produces the <code class="display"><span class="extract">&gt;&gt; Example</span></code> bits of example source text, really
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. </b>And this weaves a URL, hyperlinking it where possible.
</p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">URL_FOR_MTID</span>
</pre>
<pre class="display">
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">URL_FOR_MTID</span><span class="plain">, </span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">url</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">external</span><span class="plain">)</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::url</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">url</span><span class="plain">,</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">external</span><span class="plain">) {</span>
<span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">format</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Methods::provided</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">-&gt;</span><span class="identifier">methods</span><span class="plain">, </span><span class="constant">URL_FOR_MTID</span><span class="plain">)) {</span>
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">URL_FOR_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">url</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">, </span><span class="identifier">external</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Formats::url is used in <a href="#SP23">&#167;23</a>, 5/hf (<a href="5-hf.html#SP10">&#167;10</a>).</p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. </b>This method produces the <code class="display"><span class="extract">&gt;&gt; Example</span></code> bits of example source text, really
a convenience for Inform 7 code commentary.
</p>
@ -364,7 +390,7 @@ a convenience for Inform 7 code commentary.
<p class="endnote">The function Formats::display_line is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_8_1">&#167;1.3.3.1.8.1</a>).</p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. </b><code class="display"><span class="extract">ITEM_FOR_MTID</span></code> produces an item marker in a typical (a), (b), (c), ... sort
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. </b><code class="display"><span class="extract">ITEM_FOR_MTID</span></code> produces an item marker in a typical (a), (b), (c), ... sort
of list. <code class="display"><span class="extract">depth</span></code> can be 1 or 2: you can have lists in lists, but not lists in
lists in lists. <code class="display"><span class="extract">label</span></code> is the marker text, e.g., <code class="display"><span class="extract">a</span></code>, <code class="display"><span class="extract">b</span></code>, <code class="display"><span class="extract">c</span></code>, ...; it can
also be empty, in which case the method should move to the matching level of
@ -398,7 +424,7 @@ indentation but not weave any bracketed marker.
<p class="endnote">The function Formats::item is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_8_3">&#167;1.3.3.1.8.3</a>).</p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. </b>The "bar" is a horizontal line across the page, but it's woven only for
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. </b>The "bar" is a horizontal line across the page, but it's woven only for
very old webs nowadays. New formats really needn't implement this.
</p>
@ -419,7 +445,7 @@ very old webs nowadays. New formats really needn't implement this.
<p class="endnote">The function Formats::bar is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_7">&#167;1.3.3.1.7</a>).</p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. </b><code class="display"><span class="extract">FIGURE_FOR_MTID</span></code> has to weave a figure, i.e., render an image in some way.
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. </b><code class="display"><span class="extract">FIGURE_FOR_MTID</span></code> has to weave a figure, i.e., render an image in some way.
<code class="display"><span class="extract">figname</span></code> should be (the text of) a leafname within the <code class="display"><span class="extract">Figures</span></code> directory
of the web.
</p>
@ -443,7 +469,7 @@ of the web.
<p class="endnote">The function Formats::figure is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_2_1">&#167;1.3.3.1.2.1</a>).</p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. </b>This method weaves an angle-bracketed paragraph macro name. <code class="display"><span class="extract">defn</span></code> is set
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. </b>This method weaves an angle-bracketed paragraph macro name. <code class="display"><span class="extract">defn</span></code> is set
if and only if this is the place where the macro is defined &mdash; the usual
thing is to render some sort of equals sign after it, if so.
</p>
@ -466,7 +492,7 @@ thing is to render some sort of equals sign after it, if so.
<p class="endnote">The function Formats::para_macro is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_9_6">&#167;1.3.3.1.9.6</a>).</p>
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. </b>For many formats, page breaks are meaningless, and in that case this method
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. </b>For many formats, page breaks are meaningless, and in that case this method
should not be provided. Inweb uses them only for cosmetic benefit (and rarely
at that), so no harm is done if there's no visual indication here.
</p>
@ -488,7 +514,7 @@ at that), so no harm is done if there's no visual indication here.
<p class="endnote">The function Formats::pagebreak is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_2">&#167;1.3.3.1.2</a>, <a href="3-tw.html#SP1_3_3_1_10_1">&#167;1.3.3.1.10.1</a>).</p>
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. </b>"Blank line" here might better be called "vertical skip of some kind". The
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. </b>"Blank line" here might better be called "vertical skip of some kind". The
following should render some kind of skip, and may want to take note of whether
this happens in commentary or in code: the <code class="display"><span class="extract">in_comment</span></code> flag provides this
information.
@ -512,7 +538,7 @@ information.
<p class="endnote">The function Formats::blank_line is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_8_2">&#167;1.3.3.1.8.2</a>, <a href="3-tw.html#SP1_3_3_1_9_2">&#167;1.3.3.1.9.2</a>).</p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. </b>Another opportunity for vertical tidying-up. At the beginning of a code
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. </b>Another opportunity for vertical tidying-up. At the beginning of a code
line which occurs after a run of <code class="display"><span class="extract">@d</span></code> or <code class="display"><span class="extract">@e</span></code> definitions, this method is
called. It can then insert a little vertical gap to separate the code from
the definitions.
@ -535,7 +561,7 @@ the definitions.
<p class="endnote">The function Formats::after_definitions is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_9">&#167;1.3.3.1.9</a>).</p>
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. </b>This method is called when the weaver changes "material" &mdash; for example,
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. </b>This method is called when the weaver changes "material" &mdash; for example,
from <code class="display"><span class="extract">REGULAR_MATERIAL</span></code> to <code class="display"><span class="extract">CODE_MATERIAL</span></code>. The flag <code class="display"><span class="extract">content</span></code> is set if
the line on which this happens contains some content which will then be
woven; it will be clear for blank lines, or lines intercepted by the
@ -562,7 +588,7 @@ weaver and turned into something else (such as list items).
<p class="endnote">The function Formats::change_material is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_1">&#167;1.3.3.1.1</a>, <a href="3-tw.html#SP1_3_3_1_8_3">&#167;1.3.3.1.8.3</a>, <a href="3-tw.html#SP1_3_3_1_8_4">&#167;1.3.3.1.8.4</a>, <a href="3-tw.html#SP1_3_3_1_9_1">&#167;1.3.3.1.9.1</a>, <a href="3-tw.html#SP1_3_3_2">&#167;1.3.3.2</a>).</p>
<p class="inwebparagraph"><a id="SP21"></a><b>&#167;21. </b>This is called on a change of colour. "Colour" is really a shorthand way
<p class="inwebparagraph"><a id="SP22"></a><b>&#167;22. </b>This is called on a change of colour. "Colour" is really a shorthand way
of saying something more like "style", but seemed less ambiguous. In HTML,
this might trigger a change of CSS span style; in plain text, it would do
nothing.
@ -586,7 +612,7 @@ nothing.
<p class="endnote">The function Formats::change_colour is used in 5/tf (<a href="5-tf.html#SP8_2">&#167;8.2</a>, <a href="5-tf.html#SP15">&#167;15</a>), 5/hf (<a href="5-hf.html#SP10_1">&#167;10.1</a>).</p>
<p class="inwebparagraph"><a id="SP22"></a><b>&#167;22. </b>The following takes text, divides it up at stroke-mark boundaries &mdash;
<p class="inwebparagraph"><a id="SP23"></a><b>&#167;23. </b>The following takes text, divides it up at stroke-mark boundaries &mdash;
that is, <code class="display"><span class="extract">this is inside</span></code>, this is outside &mdash; and sends contiguous pieces
of it either to <code class="display"><span class="extract">Formats::source_fragment</span></code> or <code class="display"><span class="extract">Formats::text_fragment</span></code>
as appropriate.
@ -620,12 +646,31 @@ as appropriate.
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">within</span><span class="plain">) {</span>
<span class="functiontext">Formats::source_fragment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="functiontext">Formats::text_fragment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"> &lt; </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">within</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) &amp;&amp;</span>
<span class="plain">((</span><span class="functiontext">ACMESupport::text_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"http:</span><span class="comment">")) <code class="display"></code></span>
<span class="string">(ACMESupport::text_at(id, i, I"</span><span class="identifier">https:</span><span class="comment">")))) {</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">);</span>
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">); </span><span class="functiontext">Str::truncate</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">);</span>
<span class="functiontext">Str::substr</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">, </span><span class="functiontext">Str::at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">), </span><span class="functiontext">Str::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">));</span>
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">after</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(https*:</span><span class="comment">%C+)(%c*)")) {</span>
<span class="string">Formats::text_r(OUT, wv, before, within, comments);</span>
<span class="string">Formats::url(OUT, wv, mr.exp[0], mr.exp[0], TRUE);</span>
<span class="string">Formats::text_r(OUT, wv, mr.exp[1], within, comments);</span>
<span class="string">return;</span>
<span class="string">}</span>
<span class="string">DISCARD_TEXT(before);</span>
<span class="string">DISCARD_TEXT(after);</span>
<span class="string">}</span>
<span class="string">}</span>
<span class="string">if (within) {</span>
<span class="string">Formats::source_fragment(OUT, wv, id);</span>
<span class="string">} else {</span>
<span class="string">Formats::text_fragment(OUT, wv, id);</span>
<span class="string">}</span>
<span class="string">}</span>
</pre>
<p class="inwebparagraph"></p>
@ -636,7 +681,7 @@ as appropriate.
<p class="endnote">The function Formats::text_r appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP23"></a><b>&#167;23. </b><code class="display"><span class="extract">COMMENTARY_TEXT_FOR_MTID</span></code> straightforwardly weaves out a run of contiguous
<p class="inwebparagraph"><a id="SP24"></a><b>&#167;24. </b><code class="display"><span class="extract">COMMENTARY_TEXT_FOR_MTID</span></code> straightforwardly weaves out a run of contiguous
text. Ordinarily, any formulae written in TeX notation (i.e., in dollar signs
used as brackets) will be transmogrified into a plain text paraphrase, but
the <code class="display"><span class="extract">PRESERVE_MATH_MODE_FOR_MTID</span></code> can prevent this. (And of course the TeX
@ -673,9 +718,9 @@ format does, because it wants to keep the formulae in all their glory.)
<p class="inwebparagraph"></p>
<p class="endnote">The function Formats::text_fragment is used in <a href="#SP22">&#167;22</a>.</p>
<p class="endnote">The function Formats::text_fragment is used in <a href="#SP23">&#167;23</a>.</p>
<p class="inwebparagraph"><a id="SP24"></a><b>&#167;24. </b>The weaver has special typographical support for the stand-alone Inform
<p class="inwebparagraph"><a id="SP25"></a><b>&#167;25. </b>The weaver has special typographical support for the stand-alone Inform
document of Preform grammar, and this is the hook for it. Most formats
should ignore it.
</p>
@ -704,7 +749,7 @@ should ignore it.
<p class="endnote">The function Formats::preform_document is used in 4/is (<a href="4-is.html#SP16">&#167;16</a>).</p>
<p class="inwebparagraph"><a id="SP25"></a><b>&#167;25. </b>When the weaver adds one of its endnotes &mdash; "This function is used in...",
<p class="inwebparagraph"><a id="SP26"></a><b>&#167;26. </b>When the weaver adds one of its endnotes &mdash; "This function is used in...",
or some such &mdash; it calls this method twice, once before the start, with
<code class="display"><span class="extract">end</span></code> set to 1, and once after the end, with <code class="display"><span class="extract">end</span></code> set to 2.
</p>
@ -726,7 +771,7 @@ or some such &mdash; it calls this method twice, once before the start, with
<p class="endnote">The function Formats::endnote is used in 2/tgs (<a href="2-tgs.html#SP7">&#167;7</a>, <a href="2-tgs.html#SP7_1">&#167;7.1</a>), 3/tw (<a href="3-tw.html#SP2_1">&#167;2.1</a>, <a href="3-tw.html#SP2_2">&#167;2.2</a>, <a href="3-tw.html#SP2_3">&#167;2.3</a>).</p>
<p class="inwebparagraph"><a id="SP26"></a><b>&#167;26. </b>"Locale" here isn't used in the Unix sense. It means text which describes
<p class="inwebparagraph"><a id="SP27"></a><b>&#167;27. </b>"Locale" here isn't used in the Unix sense. It means text which describes
a range of numbered paragraphs, from <code class="display"><span class="extract">par1</span></code> to <code class="display"><span class="extract">par2</span></code>, though <code class="display"><span class="extract">par2</span></code> can
instead be null, in which case the description is of just one para. (This
is often used in endnotes.)
@ -750,7 +795,7 @@ is often used in endnotes.)
<p class="endnote">The function Formats::locale is used in 3/tw (<a href="3-tw.html#SP2_1">&#167;2.1</a>, <a href="3-tw.html#SP2_2_1">&#167;2.2.1</a>), 5/ptf (<a href="5-ptf.html#SP6">&#167;6</a>).</p>
<p class="inwebparagraph"><a id="SP27"></a><b>&#167;27. </b>And finally: the bottom of the woven file. The <code class="display"><span class="extract">comment</span></code> is, again, not
<p class="inwebparagraph"><a id="SP28"></a><b>&#167;28. </b>And finally: the bottom of the woven file. The <code class="display"><span class="extract">comment</span></code> is, again, not
intended for human eyes, and will be some sort of "End of weave" remark.
</p>
@ -772,7 +817,7 @@ intended for human eyes, and will be some sort of "End of weave" remark.
<p class="endnote">The function Formats::tail is used in 3/tw (<a href="3-tw.html#SP1_5">&#167;1.5</a>).</p>
<p class="inwebparagraph"><a id="SP28"></a><b>&#167;28. Post-processing. </b>Consider what happens when Inweb makes a PDF, via TeX. The initial weave is
<p class="inwebparagraph"><a id="SP29"></a><b>&#167;29. Post-processing. </b>Consider what happens when Inweb makes a PDF, via TeX. The initial weave is
to a TeX file; it's then "post-processing" which will turn this into a PDF.
The following method calls allow such two-stage formats to function; in
this case, it would be the PDF format which provides the necessary methods
@ -795,7 +840,7 @@ to turn TeX into PDF. The important method is this one:
<p class="endnote">The function Formats::post_process_weave is used in 3/ts (<a href="3-ts.html#SP2">&#167;2</a>).</p>
<p class="inwebparagraph"><a id="SP29"></a><b>&#167;29. </b>Optionally, a fancy report can be printed out, to describe what has been
<p class="inwebparagraph"><a id="SP30"></a><b>&#167;30. </b>Optionally, a fancy report can be printed out, to describe what has been
done:
</p>
@ -815,7 +860,7 @@ done:
<p class="endnote">The function Formats::report_on_post_processing is used in 3/ts (<a href="3-ts.html#SP2_3">&#167;2.3</a>).</p>
<p class="inwebparagraph"><a id="SP30"></a><b>&#167;30. </b>After post-processing, an index file is sometimes needed. For example, if a
<p class="inwebparagraph"><a id="SP31"></a><b>&#167;31. </b>After post-processing, an index file is sometimes needed. For example, if a
big web is woven to a swarm of PDFs, one for each section, then we also want
to make an index page in HTML which provides annotated links to those PDFs.
</p>
@ -840,7 +885,7 @@ to make an index page in HTML which provides annotated links to those PDFs.
<p class="endnote">The function Formats::index_pdfs appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP31"></a><b>&#167;31. </b>And in that index file, we may want to substitute in values for placeholder
<p class="inwebparagraph"><a id="SP32"></a><b>&#167;32. </b>And in that index file, we may want to substitute in values for placeholder
text like <code class="display"><span class="extract">[[PDF Size]]</span></code> in the template file. This is the <code class="display"><span class="extract">detail</span></code>.
</p>

View file

@ -524,7 +524,40 @@ For example,
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. </b>Pictures must be in PNG, JPG or PDF format and can be included with lines
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. </b>URLs in the web are automatically recognised and a weave to HTML will
make them into links. For example:
</p>
<pre class="display">
<span class="plain">For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships</span>
</pre>
<p class="inwebparagraph">For further reading, see: <a href="https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships
" class="external">https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships
</a></p>
<p class="inwebparagraph">Note that URLs are considered to continue to the next white space, so don't
end them with full stops or commas.
</p>
<p class="inwebparagraph">URLs will also be recognised in any text extract marked as <code class="display"><span class="extract">hyperlinked</span></code>.
For example,
</p>
<pre class="display">
<span class="plain">Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes</span>
</pre>
<p class="inwebparagraph">produces:
</p>
<pre class="display">
<span class="plain">Compare: <a href="https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes" class="external">https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes</a></span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. </b>Pictures must be in PNG, JPG or PDF format and can be included with lines
like:
</p>
@ -544,7 +577,7 @@ the web called <code class="display"><span class="extract">Figures</span></code>
pathname <code class="display"><span class="extract">Figures/Fig_2_3.pdf</span></code>.
</p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. </b>Mathematical formulae can be typed in TeX notation between dollar signs,
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. </b>Mathematical formulae can be typed in TeX notation between dollar signs,
as usual for TeX formulae. This can of course only really be rendered if
the weave is to TeX, but a few very approximate attempts are made by Inweb
so that the HTML version may also make sense. For example, <code class="display"><span class="extract">$x \leq y$</span></code> would

View file

@ -840,6 +840,10 @@ or semver, for the web. For example, if the Contents included:
the web as the variable <code class="display"><span class="extract">Semantic Version Number</span></code>.
</p>
<p class="inwebparagraph">For more on semvers, see: <a href="https://semver.org
" class="external">https://semver.org
</a></p>
<p class="inwebparagraph"><a id="SP25"></a><b>&#167;25. </b>A special advancing mechanism exists to update build numbers and dates.
Running Inweb with <code class="display"><span class="extract">-advance-build W</span></code> checks the build date for web <code class="display"><span class="extract">W</span></code>:
if it differs from today, then it is changed to today, and the build code