inweb-bootstrap/docs/inweb/5-hf.html

928 lines
141 KiB
HTML
Raw Normal View History

2019-02-04 22:26:45 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>5/tf</title>
<meta name="viewport" content="width=device-width initial-scale=1">
2019-02-04 22:26:45 +00:00
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
2019-02-04 22:26:45 +00:00
</head>
<body>
<nav role="navigation">
<h1><a href="../webs.html">Sources</a></h1>
<ul>
<li><a href="../inweb/index.html">inweb</a></li>
</ul>
<h2>Foundation</h2>
<ul>
<li><a href="../foundation-module/index.html">foundation-module</a></li>
<li><a href="../foundation-test/index.html">foundation-test</a></li>
</ul>
</nav>
<main role="main">
2019-02-09 12:33:40 +00:00
<!--Weave of '5/hf' generated by 7-->
2020-03-23 15:04:43 +00:00
<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>
2019-02-04 22:26:45 +00:00
2019-03-12 23:32:12 +00:00
<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">
2019-02-04 22:26:45 +00:00
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b></p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::create</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
2019-02-04 22:26:45 +00:00
&lt;<span class="cwebmacro">Create HTML</span> <span class="cwebmacronumber">1.1</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Create EPUB</span> <span class="cwebmacronumber">1.2</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::create is used in 5/wf (<a href="5-wf.html#SP3">&#167;3</a>).</p>
<p class="inwebparagraph"><a id="SP1_1"></a><b>&#167;1.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Create HTML</span> <span class="cwebmacronumber">1.1</span>&gt; =
</code></p>
<pre class="displaydefn">
2020-04-06 11:26:10 +00:00
<span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="functiontext">Formats::create_weave_format</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"HTML"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">".html"</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">TOP_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::top</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
&lt;<span class="cwebmacro">Make this format basically HTML</span> <span class="cwebmacronumber">1.1.1</span>&gt;<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP1">&#167;1</a>.</p>
<p class="inwebparagraph"><a id="SP1_2"></a><b>&#167;1.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Create EPUB</span> <span class="cwebmacronumber">1.2</span>&gt; =
</code></p>
<pre class="displaydefn">
2020-04-06 11:26:10 +00:00
<span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="functiontext">Formats::create_weave_format</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"ePub"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">".html"</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">TOP_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::top_EPUB</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
&lt;<span class="cwebmacro">Make this format basically HTML</span> <span class="cwebmacronumber">1.1.1</span>&gt;<span class="plain">;</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">BEGIN_WEAVING_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::begin_weaving_EPUB</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">END_WEAVING_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::end_weaving_EPUB</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP1">&#167;1</a>.</p>
<p class="inwebparagraph"><a id="SP1_1_1"></a><b>&#167;1.1.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Make this format basically HTML</span> <span class="cwebmacronumber">1.1.1</span>&gt; =
</code></p>
<pre class="displaydefn">
2020-04-06 11:26:10 +00:00
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">SUBHEADING_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::subheading</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">TOC_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::toc</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">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">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>
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">FIGURE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::figure</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">PARA_MACRO_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::para_macro</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">PAGEBREAK_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::pagebreak</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">BLANK_LINE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::blank_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">CHANGE_MATERIAL_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::change_material</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">CHANGE_COLOUR_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::change_colour</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">ENDNOTE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::endnote</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">COMMENTARY_TEXT_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::commentary_text</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">LOCALE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::locale</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">TAIL_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::tail</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP1_1">&#167;1.1</a>, <a href="#SP1_2">&#167;1.2</a>.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Current state. </b>To keep track of what we're writing, across many intermittent calls to the
routines below, we store a crude sort of state in two global variables.
(This isn't thread-safe and means we can only write one file at a time,
but in fact that's fine here.)
</p>
<pre class="definitions">
2020-04-06 11:26:10 +00:00
<span class="definitionkeyword">define</span> <span class="constant">HTML_OUT</span><span class="plain"> </span><span class="constant">0</span><span class="plain"> </span><span class="comment">write position in HTML file is currently outside of p, pre, li</span>
<span class="definitionkeyword">define</span> <span class="constant">HTML_IN_P</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> </span><span class="comment">write position in HTML file is currently outside p</span>
<span class="definitionkeyword">define</span> <span class="constant">HTML_IN_PRE</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> </span><span class="comment">write position in HTML file is currently outside pre</span>
<span class="definitionkeyword">define</span> <span class="constant">HTML_IN_LI</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> </span><span class="comment">write position in HTML file is currently outside li</span>
2019-02-04 22:26:45 +00:00
</pre>
<pre class="display">
2020-04-06 11:26:10 +00:00
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">; </span><span class="comment">one of the above</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">item_depth</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="comment">for <code class="display"><span class="extract">HTML_IN_LI</span></code> only: how many lists we're nested inside</span>
2019-02-04 22:26:45 +00:00
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">class</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">class</span><span class="plain">) </span><span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">, </span><span class="string">"class=\"%s\""</span><span class="plain">, </span><span class="identifier">class</span><span class="plain">)</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">);</span>
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_IN_P</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::cp</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">) {</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">); </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">class</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">class</span><span class="plain">) </span><span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"pre"</span><span class="plain">, </span><span class="string">"class=\"%s\""</span><span class="plain">, </span><span class="identifier">class</span><span class="plain">)</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"pre"</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">); </span><span class="constant">INDENT</span><span class="plain">;</span>
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_IN_PRE</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::cpre</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">) {</span>
<span class="constant">OUTDENT</span><span class="plain">; </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"pre"</span><span class="plain">); </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<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::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::pre is used in <a href="#SP19">&#167;19</a>.</p>
2019-02-04 22:26:45 +00:00
<p class="endnote">The function HTMLFormat::cpre is used in <a href="#SP4">&#167;4</a>, <a href="#SP19">&#167;19</a>.</p>
2019-02-04 22:26:45 +00:00
<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.
</p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::go_to_depth</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">html_in_para</span><span class="plain"> != </span><span class="constant">HTML_IN_LI</span><span class="plain">) </span><span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">item_depth</span><span class="plain"> == </span><span class="identifier">depth</span><span class="plain">) {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">item_depth</span><span class="plain"> &lt; </span><span class="identifier">depth</span><span class="plain">) {</span>
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\"items\""</span><span class="plain">); </span><span class="identifier">item_depth</span><span class="plain">++;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">item_depth</span><span class="plain"> &gt; </span><span class="identifier">depth</span><span class="plain">) {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">); </span><span class="identifier">item_depth</span><span class="plain">--;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">depth</span><span class="plain"> &gt; </span><span class="constant">0</span><span class="plain">) {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_IN_LI</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<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="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>The following generically gets us out of whatever we're currently into:
</p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">) {</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">html_in_para</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HTML_IN_P:</span><span class="plain"> </span><span class="functiontext">HTMLFormat::cp</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HTML_IN_PRE:</span><span class="plain"> </span><span class="functiontext">HTMLFormat::cpre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HTML_IN_LI:</span><span class="plain"> </span><span class="functiontext">HTMLFormat::go_to_depth</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="constant">0</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<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="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.
</p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">link</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">link</span><span class="plain">) {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTML::begin_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">link</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTML::end_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"b"</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">text</span><span class="plain">);</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"b"</span><span class="plain">);</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::breadcrumb is used in <a href="#SP9">&#167;9</a>.</p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Methods. </b>For documentation, see "Weave Fornats".
</p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::top</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">comment</span><span class="plain">) {</span>
<span class="functiontext">HTML::declare_as_HTML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
<span class="functiontext">Indexer::cover_sheet_maker</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">WEAVE_FIRST_HALF</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">self_contained</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) {</span>
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">CSS</span><span class="plain"> = </span><span class="functiontext">Patterns::obtain_filename</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">pattern</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"inweb.css"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">pattern</span><span class="plain">-&gt;</span><span class="element">hierarchical</span><span class="plain">)</span>
<span class="functiontext">Patterns::copy_up_file_into_weave</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">CSS</span><span class="plain">);</span>
<span class="reserved">else</span>
<span class="functiontext">Patterns::copy_file_into_weave</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">CSS</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTML::comment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">);</span>
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::top_EPUB</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">comment</span><span class="plain">) {</span>
<span class="functiontext">HTML::declare_as_HTML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
<span class="functiontext">Epub::note_page</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">-&gt;</span><span class="element">as_ebook</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_to</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">booklet_title</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">);</span>
<span class="functiontext">Indexer::cover_sheet_maker</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">WEAVE_FIRST_HALF</span><span class="plain">);</span>
<span class="functiontext">HTML::comment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">);</span>
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::top is used in <a href="#SP1_1">&#167;1.1</a>.</p>
<p class="endnote">The function HTMLFormat::top_EPUB is used in <a href="#SP1_2">&#167;1.2</a>.</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b></p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::subheading</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">level</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">comment</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">head</span><span class="plain">) {</span>
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">level</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">1</span><span class="plain">: </span><span class="functiontext">HTML::heading</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"h3"</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">2</span><span class="plain">: </span><span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"purpose"</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">head</span><span class="plain">) {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">": "</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<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">head</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTMLFormat::cp</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::subheading is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. </b></p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::toc</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">stage</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">text1</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">text2</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="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">stage</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">1</span><span class="plain">:</span>
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\"toc\""</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">2</span><span class="plain">:</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">3</span><span class="plain">: {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTMLFormat::xref</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
<span class="functiontext">HTML::begin_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%s%S"</span><span class="plain">, (</span><span class="functiontext">Str::get_first_char</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="element">ornament</span><span class="plain">) == </span><span class="character">'S'</span><span class="plain">)?</span><span class="string">"&amp;#167;"</span><span class="plain">:</span><span class="string">"&amp;para;"</span><span class="plain">,</span>
<span class="identifier">P</span><span class="plain">-&gt;</span><span class="element">paragraph_number</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">". %S"</span><span class="plain">, </span><span class="identifier">text2</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTML::end_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">4</span><span class="plain">:</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTML::hr</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"tocbar"</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::toc is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. </b></p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<span class="reserved">section</span><span class="plain"> *</span><span class="identifier">page_section</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">crumbs_dropped</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::paragraph_heading</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">TeX_macro</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">S</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">text_stream</span><span class="plain"> *</span><span class="identifier">heading_text</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">chaptermark</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">sectionmark</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">weight</span><span class="plain">) {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">page_section</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">weight</span><span class="plain"> == </span><span class="constant">3</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">; </span><span class="comment">Skip chapter headings</span>
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"inwebparagraph"</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTMLFormat::xref</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
<span class="functiontext">HTML::anchor</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"b"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%s%S"</span><span class="plain">, (</span><span class="functiontext">Str::get_first_char</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="element">ornament</span><span class="plain">) == </span><span class="character">'S'</span><span class="plain">)?</span><span class="string">"&amp;#167;"</span><span class="plain">:</span><span class="string">"&amp;para;"</span><span class="plain">,</span>
<span class="identifier">P</span><span class="plain">-&gt;</span><span class="element">paragraph_number</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">". %S%s "</span><span class="plain">, </span><span class="identifier">heading_text</span><span class="plain">, (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">heading_text</span><span class="plain">) &gt; </span><span class="constant">0</span><span class="plain">)?</span><span class="string">"."</span><span class="plain">:</span><span class="string">""</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"b"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<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">wv</span><span class="plain">-&gt;</span><span class="element">self_contained</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">crumbs_dropped</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) {</span>
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain"> = </span><span class="functiontext">Patterns::obtain_filename</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">pattern</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"crumbs.gif"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">pattern</span><span class="plain">-&gt;</span><span class="element">hierarchical</span><span class="plain">)</span>
<span class="functiontext">Patterns::copy_up_file_into_weave</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
<span class="reserved">else</span>
<span class="functiontext">Patterns::copy_file_into_weave</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
<span class="identifier">crumbs_dropped</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\"crumbs\""</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::drop_initial_breadcrumbs</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">breadcrumbs</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">docs_mode</span><span class="plain">);</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">bct</span><span class="plain"> = </span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Title"</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="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Short Title"</span><span class="plain">)) &gt; </span><span class="constant">0</span><span class="plain">) {</span>
<span class="identifier">bct</span><span class="plain"> = </span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Short Title"</span><span class="plain">);</span>
2020-04-03 15:29:03 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">bct</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"index.html"</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">-&gt;</span><span class="element">chaptered</span><span class="plain">) {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">chapter_link</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">chapter_link</span><span class="plain">, </span><span class="string">"index.html#%s%S"</span><span class="plain">, (</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">-&gt;</span><span class="element">as_ebook</span><span class="plain">)?</span><span class="string">"C"</span><span class="plain">:</span><span class="string">""</span><span class="plain">,</span>
<span class="identifier">S</span><span class="plain">-&gt;</span><span class="element">owning_chapter</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">-&gt;</span><span class="element">ch_range</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">-&gt;</span><span class="element">owning_chapter</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">-&gt;</span><span class="element">ch_title</span><span class="plain">, </span><span class="identifier">chapter_link</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">chapter_link</span><span class="plain">);</span>
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">heading_text</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\"crumbs\""</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">heading_text</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::drop_initial_breadcrumbs</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">linked_list</span><span class="plain"> *</span><span class="identifier">crumbs</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">docs_mode</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">LinkedLists::len</span><span class="plain">(</span><span class="identifier">crumbs</span><span class="plain">) &gt; </span><span class="constant">0</span><span class="plain">) {</span>
<span class="reserved">breadcrumb_request</span><span class="plain"> *</span><span class="identifier">BR</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">BR</span><span class="plain">, </span><span class="reserved">breadcrumb_request</span><span class="plain">, </span><span class="identifier">crumbs</span><span class="plain">) {</span>
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">BR</span><span class="plain">-&gt;</span><span class="element">breadcrumb_text</span><span class="plain">, </span><span class="identifier">BR</span><span class="plain">-&gt;</span><span class="element">breadcrumb_link</span><span class="plain">);</span>
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<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">docs_mode</span><span class="plain">)</span>
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"&amp;#9733;"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"../webs.html"</span><span class="plain">);</span>
<span class="plain">}</span>
2019-02-04 22:26:45 +00:00
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::paragraph_heading is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="endnote">The function HTMLFormat::drop_initial_breadcrumbs is used in 3/ti (<a href="3-ti.html#SP5_1_8">&#167;5.1.8</a>).</p>
2019-02-04 22:26:45 +00:00
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. </b></p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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">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>
2019-02-04 22:26:45 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">prefatory</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">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq</span><span class="plain">(</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"enum"</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">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">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>
2019-02-04 22:26:45 +00:00
<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>
2020-04-06 11:26:10 +00:00
<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="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>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="plain">} </span><span class="reserved">else</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>
2019-02-04 22:26:45 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<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>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<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>
2019-02-04 22:26:45 +00:00
<span class="identifier">current_colour</span><span class="plain"> = -1;</span>
2020-04-06 11:26:10 +00:00
<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="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>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::source_code is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP10_1"></a><b>&#167;10.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Adjust code colour as necessary</span> <span class="cwebmacronumber">10.1</span>&gt; =
</code></p>
<pre class="displaydefn">
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">colour_wanted</span><span class="plain"> != </span><span class="identifier">current_colour</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="functiontext">Formats::change_colour</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">colour_wanted</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">current_colour</span><span class="plain"> = </span><span class="identifier">colour_wanted</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP10">&#167;10</a>.</p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. </b></p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::inline_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">enter</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">enter</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">html_in_para</span><span class="plain"> == </span><span class="constant">HTML_OUT</span><span class="plain">) </span><span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"inwebparagraph"</span><span class="plain">);</span>
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"code"</span><span class="plain">, </span><span class="string">"class=\"display\""</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"code"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::inline_code is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. </b></p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"blockquote"</span><span class="plain">); </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">); </span><span class="constant">INDENT</span><span class="plain">;</span>
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTMLFormat::cp</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="constant">OUTDENT</span><span class="plain">; </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"blockquote"</span><span class="plain">); </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">label</span><span class="plain">) {</span>
<span class="functiontext">HTMLFormat::go_to_depth</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">depth</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">label</span><span class="plain">) &gt; </span><span class="constant">0</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">label</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">" "</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="functiontext">HTML::hr</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">figname</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">w</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">h</span><span class="plain">, </span><span class="reserved">programming_language</span><span class="plain"> *</span><span class="identifier">pl</span><span class="plain">) {</span>
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">Filenames::in_folder</span><span class="plain">(</span>
<span class="functiontext">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">-&gt;</span><span class="element">path_to_web</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Figures"</span><span class="plain">),</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">figname</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">RF</span><span class="plain"> = </span><span class="functiontext">Filenames::from_text</span><span class="plain">(</span><span class="identifier">figname</span><span class="plain">);</span>
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"center"</span><span class="plain">);</span>
<span class="functiontext">HTML::image</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">RF</span><span class="plain">);</span>
<span class="functiontext">Patterns::copy_file_into_weave</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">F</span><span class="plain">);</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"center"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
2020-03-26 23:01:14 +00:00
<span class="plain">}</span>
2019-02-04 22:26:45 +00:00
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">para_macro</span><span class="plain"> *</span><span class="identifier">pmac</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="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">pmac</span><span class="plain">-&gt;</span><span class="element">defining_paragraph</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&amp;lt;"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"%s\""</span><span class="plain">, (</span><span class="identifier">defn</span><span class="plain">)?</span><span class="string">"cwebmacrodefn"</span><span class="plain">:</span><span class="string">"cwebmacro"</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">pmac</span><span class="plain">-&gt;</span><span class="element">macro_name</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"cwebmacronumber\""</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">P</span><span class="plain">-&gt;</span><span class="element">paragraph_number</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&amp;gt;%s"</span><span class="plain">, (</span><span class="identifier">defn</span><span class="plain">)?</span><span class="string">" ="</span><span class="plain">:</span><span class="string">""</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">in_comment</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">html_in_para</span><span class="plain"> == </span><span class="constant">HTML_IN_PRE</span><span class="plain">) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">old_state</span><span class="plain"> = </span><span class="identifier">html_in_para</span><span class="plain">, </span><span class="identifier">old_depth</span><span class="plain"> = </span><span class="identifier">item_depth</span><span class="plain">;</span>
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">old_state</span><span class="plain"> == </span><span class="constant">HTML_IN_P</span><span class="plain">) || ((</span><span class="identifier">old_state</span><span class="plain"> == </span><span class="constant">HTML_IN_LI</span><span class="plain">) &amp;&amp; (</span><span class="identifier">old_depth</span><span class="plain"> &gt; </span><span class="constant">1</span><span class="plain">)))</span>
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">,</span><span class="string">"inwebparagraph"</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">old_material</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">new_material</span><span class="plain">, </span><span class="reserved">int</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">plainly</span><span class="plain">) {</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">old_material</span><span class="plain"> != </span><span class="identifier">new_material</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">old_material</span><span class="plain"> == </span><span class="constant">MACRO_MATERIAL</span><span class="plain">) </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"code"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">content</span><span class="plain">) || (</span><span class="identifier">new_material</span><span class="plain"> != </span><span class="constant">MACRO_MATERIAL</span><span class="plain">))</span>
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">old_material</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CODE_MATERIAL:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">REGULAR_MATERIAL:</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">new_material</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CODE_MATERIAL:</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">plainly</span><span class="plain">) </span><span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"display"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DEFINITION_MATERIAL:</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"definitions"</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">MACRO_MATERIAL:</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">content</span><span class="plain">) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">,</span><span class="string">"macrodefinition"</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"code"</span><span class="plain">, </span><span class="string">"class=\"display\""</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">REGULAR_MATERIAL:</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">content</span><span class="plain">) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">,</span><span class="string">"inwebparagraph"</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">break</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">MACRO_MATERIAL:</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">new_material</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CODE_MATERIAL:</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"displaydefn"</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DEFINITION_MATERIAL:</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"definitions"</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DEFINITION_MATERIAL:</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">new_material</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CODE_MATERIAL:</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">plainly</span><span class="plain">) </span><span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"display"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">MACRO_MATERIAL:</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"macrodefinition"</span><span class="plain">);</span>
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"code"</span><span class="plain">, </span><span class="string">"class=\"display\""</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">break</span><span class="plain">;</span>
2020-04-04 19:46:43 +00:00
<span class="identifier">default:</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTMLFormat::cpre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">col</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">in_code</span><span class="plain">) {</span>
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"plain"</span><span class="plain">;</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">col</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DEFINITION_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"cwebmacrotext"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">FUNCTION_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"functiontext"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">IDENTIFIER_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"identifier"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ELEMENT_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"element"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">RESERVED_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"reserved"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">STRING_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"string"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CHAR_LITERAL_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"character"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CONSTANT_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"constant"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">PLAIN_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"plain"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">EXTRACT_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"extract"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">COMMENT_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"comment"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="identifier">default:</span><span class="plain"> </span><span class="identifier">PRINT</span><span class="plain">(</span><span class="string">"col: %d\n"</span><span class="plain">, </span><span class="identifier">col</span><span class="plain">); </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad colour"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"%s\""</span><span class="plain">, </span><span class="identifier">cl</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">end</span><span class="plain"> == </span><span class="constant">1</span><span class="plain">) {</span>
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"endnote"</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="functiontext">HTMLFormat::cp</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">id</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">html_in_para</span><span class="plain"> == </span><span class="constant">HTML_OUT</span><span class="plain">) </span><span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"inwebparagraph"</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">id</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="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_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="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">id</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="identifier">i</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">Str::get_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="character">'-'</span><span class="plain">) &amp;&amp;</span>
<span class="plain">(</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+1) == </span><span class="character">'-'</span><span class="plain">) &amp;&amp;</span>
<span class="plain">((</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+2) == </span><span class="character">' '</span><span class="plain">) || (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+2) == </span><span class="constant">0</span><span class="plain">))) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&amp;mdash;"</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++;</span>
2020-04-06 11:26:10 +00:00
<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">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">' '</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+1) == </span><span class="character">'-'</span><span class="plain">) &amp;&amp;</span>
<span class="plain">(</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+2) == </span><span class="character">'-'</span><span class="plain">) &amp;&amp;</span>
<span class="plain">((</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+3) == </span><span class="character">' '</span><span class="plain">) || (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+3) == </span><span class="character">'\n'</span><span class="plain">) ||</span>
<span class="plain">(</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+3) == </span><span class="constant">0</span><span class="plain">))) {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" &amp;mdash;"</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">+=2;</span>
2020-04-06 11:26:10 +00:00
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">PUT</span><span class="plain">(</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">));</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">par1</span><span class="plain">, </span><span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">par2</span><span class="plain">) {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTMLFormat::xref</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">par1</span><span class="plain">, </span><span class="identifier">page_section</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
<span class="functiontext">HTML::begin_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%s%S"</span><span class="plain">,</span>
2020-04-06 11:26:10 +00:00
<span class="plain">(</span><span class="functiontext">Str::get_first_char</span><span class="plain">(</span><span class="identifier">par1</span><span class="plain">-&gt;</span><span class="element">ornament</span><span class="plain">) == </span><span class="character">'S'</span><span class="plain">)?</span><span class="string">"&amp;#167;"</span><span class="plain">:</span><span class="string">"&amp;para;"</span><span class="plain">,</span>
<span class="identifier">par1</span><span class="plain">-&gt;</span><span class="element">paragraph_number</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">par2</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">par2</span><span class="plain">-&gt;</span><span class="element">paragraph_number</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>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<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>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">a_link</span><span class="plain">) {</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">from</span><span class="plain">) &amp;&amp; (</span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="element">under_section</span><span class="plain"> != </span><span class="identifier">from</span><span class="plain">)) {</span>
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="element">under_section</span><span class="plain">-&gt;</span><span class="element">sect_range</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">linkto</span><span class="plain">)</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">'/'</span><span class="plain">) || (</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">' '</span><span class="plain">))</span>
<span class="functiontext">Str::put</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="character">'-'</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">, </span><span class="string">".html"</span><span class="plain">);</span>
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S%s%S"</span><span class="plain">, </span><span class="identifier">linkto</span><span class="plain">, (</span><span class="identifier">a_link</span><span class="plain">)?</span><span class="string">"#"</span><span class="plain">:</span><span class="string">""</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="element">ornament</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"P"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="element">paragraph_number</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">)</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">'.'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"_"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">PUT</span><span class="plain">(</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">));</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<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="inwebparagraph"><a id="SP25"></a><b>&#167;25. </b></p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">comment</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">this_S</span><span class="plain">) {</span>
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">docs_mode</span><span class="plain">) {</span>
<span class="reserved">chapter</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain"> = </span><span class="identifier">this_S</span><span class="plain">-&gt;</span><span class="element">owning_chapter</span><span class="plain">;</span>
<span class="reserved">section</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">, *</span><span class="identifier">last_S</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">, *</span><span class="identifier">prev_S</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">, *</span><span class="identifier">next_S</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="reserved">section</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-&gt;</span><span class="element">sections</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> == </span><span class="identifier">this_S</span><span class="plain">) </span><span class="identifier">prev_S</span><span class="plain"> = </span><span class="identifier">last_S</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">last_S</span><span class="plain"> == </span><span class="identifier">this_S</span><span class="plain">) </span><span class="identifier">next_S</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
2019-03-12 23:32:12 +00:00
<span class="identifier">last_S</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">prev_S</span><span class="plain">) || (</span><span class="identifier">next_S</span><span class="plain">)) {</span>
<span class="functiontext">HTML::hr</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"tocbar"</span><span class="plain">);</span>
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\"toc\""</span><span class="plain">);</span>
2020-03-26 23:01:14 +00:00
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prev_S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;i&gt;(This section begins %S.)&lt;/i&gt;"</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">-&gt;</span><span class="element">ch_title</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> {</span>
2020-03-26 23:01:14 +00:00
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTMLFormat::sref</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">prev_S</span><span class="plain">);</span>
<span class="functiontext">HTML::begin_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Back to '%S'"</span><span class="plain">, </span><span class="identifier">prev_S</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">-&gt;</span><span class="element">sect_title</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>
2020-03-26 23:01:14 +00:00
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">next_S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;i&gt;(This section ends %S.)&lt;/i&gt;"</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">-&gt;</span><span class="element">ch_title</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> {</span>
2020-03-26 23:01:14 +00:00
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTMLFormat::sref</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">next_S</span><span class="plain">);</span>
<span class="functiontext">HTML::begin_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Continue with '%S'"</span><span class="plain">, </span><span class="identifier">next_S</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">-&gt;</span><span class="element">sect_title</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>
2020-03-26 23:01:14 +00:00
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">);</span>
2019-03-12 23:32:12 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTML::hr</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"tocbar"</span><span class="plain">);</span>
2019-03-12 23:32:12 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="functiontext">HTML::comment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">);</span>
<span class="functiontext">HTML::completed</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
<span class="functiontext">Bibliographic::set_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Booklet Title"</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">booklet_title</span><span class="plain">);</span>
<span class="functiontext">Indexer::cover_sheet_maker</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-&gt;</span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">WEAVE_SECOND_HALF</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::tail is used in <a href="#SP1_1_1">&#167;1.1.1</a>.</p>
2019-03-12 23:32:12 +00:00
<p class="inwebparagraph"><a id="SP26"></a><b>&#167;26. </b></p>
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unwoven section"</span><span class="plain">);</span>
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">-&gt;</span><span class="element">sect_range</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">'/'</span><span class="plain">)</span>
2019-03-12 23:32:12 +00:00
<span class="identifier">PUT</span><span class="plain">(</span><span class="character">'-'</span><span class="plain">);</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">else</span>
<span class="identifier">PUT</span><span class="plain">(</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">));</span>
2019-03-12 23:32:12 +00:00
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">".html"</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::sref is used in <a href="#SP25">&#167;25</a>.</p>
<p class="inwebparagraph"><a id="SP27"></a><b>&#167;27. EPUB-only methods. </b></p>
2019-02-04 22:26:45 +00:00
<pre class="display">
2020-04-06 11:26:10 +00:00
<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>
2019-02-04 22:26:45 +00:00
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">)</span>
2020-04-06 11:26:10 +00:00
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="string">"%S"</span><span class="plain">, </span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-&gt;</span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Title"</span><span class="plain">));</span>
<span class="identifier">W</span><span class="plain">-&gt;</span><span class="element">as_ebook</span><span class="plain"> = </span><span class="functiontext">Epub::new</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="string">"P"</span><span class="plain">);</span>
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">CSS</span><span class="plain"> = </span><span class="functiontext">Patterns::obtain_filename</span><span class="plain">(</span><span class="identifier">pattern</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"inweb.css"</span><span class="plain">);</span>
<span class="functiontext">Epub::use_CSS_throughout</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-&gt;</span><span class="element">as_ebook</span><span class="plain">, </span><span class="identifier">CSS</span><span class="plain">);</span>
<span class="functiontext">Epub::attach_metadata</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-&gt;</span><span class="element">as_ebook</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"identifier"</span><span class="plain">, </span><span class="identifier">T</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">)</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Reader::woven_folder</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">);</span>
<span class="identifier">W</span><span class="plain">-&gt;</span><span class="element">redirect_weaves_to</span><span class="plain"> = </span><span class="functiontext">Epub::begin_construction</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-&gt;</span><span class="element">as_ebook</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="functiontext">Shell::copy</span><span class="plain">(</span><span class="identifier">CSS</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">-&gt;</span><span class="element">redirect_weaves_to</span><span class="plain">, </span><span class="string">""</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="constant">SWARM_SECTIONS_SWM</span><span class="plain">;</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
2020-04-06 11:26:10 +00:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::end_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>
<span class="functiontext">Epub::end_construction</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-&gt;</span><span class="element">as_ebook</span><span class="plain">);</span>
2019-02-04 22:26:45 +00:00
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLFormat::begin_weaving_EPUB is used in <a href="#SP1_2">&#167;1.2</a>.</p>
<p class="endnote">The function HTMLFormat::end_weaving_EPUB is used in <a href="#SP1_2">&#167;1.2</a>.</p>
2019-03-12 23:32:12 +00:00
<hr class="tocbar">
<ul class="toc"><li><a href="5-tf.html">Back to 'TeX Format'</a></li><li><a href="5-rtt.html">Continue with 'Running Through TeX'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</main>
2019-02-04 22:26:45 +00:00
</body>
</html>