Finished TeX renderer
This commit is contained in:
parent
717329f449
commit
be52c3913d
26 changed files with 2264 additions and 2776 deletions
|
@ -222,7 +222,7 @@ void Patterns::post_process(weave_pattern *pattern, weave_order *wv, int verbose
|
|||
} else PUT_TO(cmd, Str::get_at(T, i));
|
||||
}
|
||||
if ((Str::includes_at(cmd, 0, I"PROCESS ")) && (last_F)) {
|
||||
RunningTeX::post_process_weave(wv, last_F);
|
||||
TeXUtilities::post_process_weave(wv, last_F);
|
||||
} else {
|
||||
if (verbosely) PRINT("(%S)\n", cmd);
|
||||
int rv = Shell::run(cmd);
|
||||
|
|
|
@ -107,19 +107,6 @@ void Formats::render(text_stream *OUT, heterogeneous_tree *tree, filename *into)
|
|||
DISCARD_TEXT(template);
|
||||
}
|
||||
|
||||
@ When whole chapters are wovem, or all-in-one weaves include multiple
|
||||
chapters, the format can add a table of chapter contents, or some similar
|
||||
interstitial material. This is how:
|
||||
|
||||
@e CHAPTER_TP_FOR_MTID
|
||||
|
||||
=
|
||||
VMETHOD_TYPE(CHAPTER_TP_FOR_MTID, weave_format *wf, text_stream *OUT, weave_order *wv, chapter *C)
|
||||
void Formats::chapter_title_page(OUTPUT_STREAM, weave_order *wv, chapter *C) {
|
||||
weave_format *wf = wv->format;
|
||||
VMETHOD_CALL(wf, CHAPTER_TP_FOR_MTID, OUT, wv, C);
|
||||
}
|
||||
|
||||
@ The weaver has special typographical support for the stand-alone Inform
|
||||
document of Preform grammar, and this is the hook for it. Most formats
|
||||
should ignore it.
|
||||
|
@ -162,7 +149,7 @@ handled by //Patterns::post_process// directly.
|
|||
=
|
||||
VMETHOD_TYPE(POST_PROCESS_REPORT_POS_MTID, weave_format *wf, weave_order *wv)
|
||||
void Formats::report_on_post_processing(weave_order *wv) {
|
||||
RunningTeX::report_on_post_processing(wv);
|
||||
TeXUtilities::report_on_post_processing(wv);
|
||||
VMETHOD_CALL(wv->format, POST_PROCESS_REPORT_POS_MTID, wv);
|
||||
}
|
||||
|
||||
|
@ -176,7 +163,7 @@ IMETHOD_TYPE(POST_PROCESS_SUBSTITUTE_POS_MTID, weave_format *wf, text_stream *OU
|
|||
weave_order *wv, text_stream *detail, weave_pattern *pattern)
|
||||
int Formats::substitute_post_processing_data(OUTPUT_STREAM, weave_order *wv,
|
||||
text_stream *detail, weave_pattern *pattern) {
|
||||
int rv = RunningTeX::substitute_post_processing_data(OUT, wv, detail);
|
||||
int rv = TeXUtilities::substitute_post_processing_data(OUT, wv, detail);
|
||||
IMETHOD_CALL(rv, wv->format, POST_PROCESS_SUBSTITUTE_POS_MTID, OUT, wv, detail, pattern);
|
||||
return rv;
|
||||
}
|
||||
|
|
|
@ -700,7 +700,7 @@ that service uses to identify the video/audio in question.
|
|||
text_stream *plugin_name = hrs->wv->pattern->mathematics_plugin;
|
||||
if (Str::len(plugin_name) == 0) {
|
||||
TEMPORARY_TEXT(R);
|
||||
TeX::remove_math_mode(R, C->content);
|
||||
TeXUtilities::remove_math_mode(R, C->content);
|
||||
HTMLFormat::escape_text(OUT, R);
|
||||
DISCARD_TEXT(R);
|
||||
} else {
|
||||
|
|
|
@ -9,7 +9,6 @@ interesting, but ought to be available.
|
|||
void PlainText::create(void) {
|
||||
weave_format *wf = Formats::create_weave_format(I"plain", I".txt");
|
||||
METHOD_ADD(wf, RENDER_FOR_MTID, PlainText::render);
|
||||
METHOD_ADD(wf, CHAPTER_TP_FOR_MTID, PlainText::chapter_title_page);
|
||||
}
|
||||
|
||||
@h Methods.
|
||||
|
@ -32,13 +31,24 @@ void PlainText::render(weave_format *self, text_stream *OUT, heterogeneous_tree
|
|||
int PlainText::render_visit(tree_node *N, void *state, int L) {
|
||||
PlainText_render_state *prs = (PlainText_render_state *) state;
|
||||
text_stream *OUT = prs->OUT;
|
||||
if (N->type == weave_document_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_head_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_body_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_tail_node_type) @<Render nothing@>
|
||||
if ((N->type == weave_document_node_type) ||
|
||||
(N->type == weave_head_node_type) ||
|
||||
(N->type == weave_body_node_type) ||
|
||||
(N->type == weave_tail_node_type) ||
|
||||
(N->type == weave_chapter_title_page_node_type) ||
|
||||
(N->type == weave_chapter_footer_node_type) ||
|
||||
(N->type == weave_figure_node_type) ||
|
||||
(N->type == weave_audio_node_type) ||
|
||||
(N->type == weave_material_node_type) ||
|
||||
(N->type == weave_chapter_node_type) ||
|
||||
(N->type == weave_carousel_slide_node_type) ||
|
||||
(N->type == weave_toc_node_type) ||
|
||||
(N->type == weave_toc_line_node_type) ||
|
||||
(N->type == weave_grammar_index_node_type) ||
|
||||
(N->type == weave_inline_node_type)) @<Render nothing@>
|
||||
|
||||
else if (N->type == weave_verbatim_node_type) @<Render verbatim@>
|
||||
else if (N->type == weave_chapter_header_node_type) @<Render chapter header@>
|
||||
else if (N->type == weave_chapter_footer_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_section_header_node_type) @<Render header@>
|
||||
else if (N->type == weave_section_footer_node_type) @<Render footer@>
|
||||
else if (N->type == weave_section_purpose_node_type) @<Render purpose@>
|
||||
|
@ -48,21 +58,13 @@ int PlainText::render_visit(tree_node *N, void *state, int L) {
|
|||
else if (N->type == weave_linebreak_node_type) @<Render linebreak@>
|
||||
else if (N->type == weave_paragraph_heading_node_type) @<Render paragraph heading@>
|
||||
else if (N->type == weave_endnote_node_type) @<Render endnote@>
|
||||
else if (N->type == weave_figure_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_audio_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_material_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_embed_node_type) @<Render embed@>
|
||||
else if (N->type == weave_pmac_node_type) @<Render pmac@>
|
||||
else if (N->type == weave_vskip_node_type) @<Render vskip@>
|
||||
else if (N->type == weave_chapter_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_section_node_type) @<Render section@>
|
||||
else if (N->type == weave_code_line_node_type) @<Render code line@>
|
||||
else if (N->type == weave_function_usage_node_type) @<Render function usage@>
|
||||
else if (N->type == weave_commentary_node_type) @<Render commentary@>
|
||||
else if (N->type == weave_carousel_slide_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_toc_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_toc_line_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_chapter_title_page_node_type) @<Render weave_chapter_title_page_node@>
|
||||
else if (N->type == weave_defn_node_type) @<Render defn@>
|
||||
else if (N->type == weave_source_code_node_type) @<Render source code@>
|
||||
else if (N->type == weave_url_node_type) @<Render URL@>
|
||||
|
@ -71,10 +73,9 @@ int PlainText::render_visit(tree_node *N, void *state, int L) {
|
|||
else if (N->type == weave_display_line_node_type) @<Render display line@>
|
||||
else if (N->type == weave_function_defn_node_type) @<Render function defn@>
|
||||
else if (N->type == weave_item_node_type) @<Render item@>
|
||||
else if (N->type == weave_grammar_index_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_inline_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_locale_node_type) @<Render locale@>
|
||||
else if (N->type == weave_maths_node_type) @<Render maths@>
|
||||
|
||||
else internal_error("unable to render unknown node");
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -165,10 +166,6 @@ int PlainText::render_visit(tree_node *N, void *state, int L) {
|
|||
WRITE("%S", C->text);
|
||||
if (C->in_code) WRITE(" */ ");
|
||||
|
||||
@<Render weave_chapter_title_page_node@> =
|
||||
weave_chapter_title_page_node *C = RETRIEVE_POINTER_weave_chapter_title_page_node(N->content);
|
||||
LOG("It was %d\n", C->allocation_id);
|
||||
|
||||
@<Render defn@> =
|
||||
weave_defn_node *C = RETRIEVE_POINTER_weave_defn_node(N->content);
|
||||
WRITE("%S ", C->keyword);
|
||||
|
@ -216,13 +213,3 @@ int PlainText::render_visit(tree_node *N, void *state, int L) {
|
|||
@<Recurse tne renderer through children nodes@> =
|
||||
for (tree_node *M = N->child; M; M = M->next)
|
||||
Trees::traverse_from(M, &PlainText::render_visit, (void *) prs, L+1);
|
||||
|
||||
@ =
|
||||
void PlainText::chapter_title_page(weave_format *self, text_stream *OUT,
|
||||
weave_order *wv, chapter *C) {
|
||||
WRITE("%S\n\n", C->md->rubric);
|
||||
section *S;
|
||||
LOOP_OVER_LINKED_LIST(S, section, C->sections)
|
||||
WRITE(" %S: %S\n %S\n",
|
||||
S->md->sect_range, S->md->sect_title, S->sect_purpose);
|
||||
}
|
||||
|
|
|
@ -1,123 +0,0 @@
|
|||
[RunningTeX::] Running Through TeX.
|
||||
|
||||
To post-process a weave by running it through TeX, or one of its
|
||||
variant typesetting programs.
|
||||
|
||||
@h Running TeX.
|
||||
Although we are running |pdftex|, a modern variant of TeX, rather than the
|
||||
original, they are very similar as command-line tools; the difference is
|
||||
that the output is a PDF file rather than a DVI file, Knuth's original stab
|
||||
at the same basic idea.
|
||||
|
||||
In particular, we call it in |-interaction=scrollmode| so that any errors
|
||||
whizz by rather than interrupting or halting the session. Because of that, we
|
||||
spool the output onto a console file which we can then read in and parse to
|
||||
find the number of errors actually generated. Prime among errors is the
|
||||
"overfull hbox error", a defect of TeX resulting from its inability to adjust
|
||||
letter spacing, so that it requires us to adjust the copy to fit the margins
|
||||
of the page properly. (In practice we get this here by having code lines which
|
||||
are too wide to display.)
|
||||
|
||||
@ =
|
||||
void RunningTeX::post_process_weave(weave_order *wv, filename *CF) {
|
||||
tex_results *res = CREATE(tex_results);
|
||||
@<Initialise the TeX results@>;
|
||||
wv->post_processing_results = res;
|
||||
@<Read back the console file and parse it for error messages@>;
|
||||
}
|
||||
|
||||
@ We're going to have to read in a console file of TeX output to work out
|
||||
what happened, and this structure will store what we find:
|
||||
|
||||
=
|
||||
typedef struct tex_results {
|
||||
int overfull_hbox_count;
|
||||
int tex_error_count;
|
||||
int page_count;
|
||||
int pdf_size;
|
||||
struct filename *PDF_filename;
|
||||
MEMORY_MANAGEMENT
|
||||
} tex_results;
|
||||
|
||||
@<Initialise the TeX results@> =
|
||||
res->overfull_hbox_count = 0;
|
||||
res->tex_error_count = 0;
|
||||
res->page_count = 0;
|
||||
res->pdf_size = 0;
|
||||
res->PDF_filename = Filenames::set_extension(CF, I".pdf");
|
||||
|
||||
@ TeX helpfully reports the size and page count of what it produces, and
|
||||
we're not too proud to scrape that information out of the console file, besides
|
||||
the error messages (which begin with an exclamation mark in column 1).
|
||||
|
||||
@<Read back the console file and parse it for error messages@> =
|
||||
TextFiles::read(CF, FALSE,
|
||||
"can't open console file", TRUE, RunningTeX::scan_console_line, NULL,
|
||||
(void *) res);
|
||||
|
||||
@ =
|
||||
void RunningTeX::scan_console_line(text_stream *line, text_file_position *tfp,
|
||||
void *res_V) {
|
||||
tex_results *res = (tex_results *) res_V;
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, line,
|
||||
L"Output written %c*? %((%d+) page%c*?(%d+) bytes%).")) {
|
||||
res->page_count = Str::atoi(mr.exp[0], 0);
|
||||
res->pdf_size = Str::atoi(mr.exp[1], 0);
|
||||
}
|
||||
if (Regexp::match(&mr, line, L"%c+verfull \\hbox%c+"))
|
||||
res->overfull_hbox_count++;
|
||||
else if (Str::get_first_char(line) == '!') {
|
||||
res->tex_error_count++;
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
}
|
||||
|
||||
@h Reporting.
|
||||
|
||||
=
|
||||
void RunningTeX::report_on_post_processing(weave_order *wv) {
|
||||
tex_results *res = wv->post_processing_results;
|
||||
if (res) {
|
||||
PRINT(": %dpp %dK", res->page_count, res->pdf_size/1024);
|
||||
if (res->overfull_hbox_count > 0)
|
||||
PRINT(", %d overfull hbox(es)", res->overfull_hbox_count);
|
||||
if (res->tex_error_count > 0)
|
||||
PRINT(", %d error(s)", res->tex_error_count);
|
||||
}
|
||||
}
|
||||
|
||||
@ And here are some details to do with the results of post-processing.
|
||||
|
||||
=
|
||||
int RunningTeX::substitute_post_processing_data(text_stream *to, weave_order *wv,
|
||||
text_stream *detail) {
|
||||
if (wv) {
|
||||
tex_results *res = wv->post_processing_results;
|
||||
if (res) {
|
||||
if (Str::eq_wide_string(detail, L"PDF Size")) {
|
||||
WRITE_TO(to, "%dKB", res->pdf_size/1024);
|
||||
} else if (Str::eq_wide_string(detail, L"Extent")) {
|
||||
WRITE_TO(to, "%dpp", res->page_count);
|
||||
} else if (Str::eq_wide_string(detail, L"Leafname")) {
|
||||
Str::copy(to, Filenames::get_leafname(res->PDF_filename));
|
||||
} else if (Str::eq_wide_string(detail, L"Errors")) {
|
||||
Str::clear(to);
|
||||
if ((res->overfull_hbox_count > 0) || (res->tex_error_count > 0))
|
||||
WRITE_TO(to, ": ");
|
||||
if (res->overfull_hbox_count > 0)
|
||||
WRITE_TO(to, "%d overfull line%s",
|
||||
res->overfull_hbox_count,
|
||||
(res->overfull_hbox_count>1)?"s":"");
|
||||
if ((res->overfull_hbox_count > 0) && (res->tex_error_count > 0))
|
||||
WRITE_TO(to, ", ");
|
||||
if (res->tex_error_count > 0)
|
||||
WRITE_TO(to, "%d TeX error%s",
|
||||
res->tex_error_count,
|
||||
(res->tex_error_count>1)?"s":"");
|
||||
} else return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
|
@ -7,72 +7,65 @@ software, TeX.
|
|||
|
||||
=
|
||||
void TeX::create(void) {
|
||||
@<Create TeX format@>;
|
||||
@<Create DVI format@>;
|
||||
@<Create PDF format@>;
|
||||
}
|
||||
|
||||
@<Create TeX format@> =
|
||||
weave_format *wf = Formats::create_weave_format(I"TeX", I".tex");
|
||||
METHOD_ADD(wf, RENDER_FOR_MTID, TeX::render_TeX);
|
||||
METHOD_ADD(wf, CHAPTER_TP_FOR_MTID, TeX::chapter_title_page);
|
||||
METHOD_ADD(wf, PREFORM_DOCUMENT_FOR_MTID, TeX::preform_document);
|
||||
}
|
||||
|
||||
@<Create DVI format@> =
|
||||
weave_format *wf = Formats::create_weave_format(I"DVI", I".tex");
|
||||
METHOD_ADD(wf, RENDER_FOR_MTID, TeX::render_DVI);
|
||||
METHOD_ADD(wf, CHAPTER_TP_FOR_MTID, TeX::chapter_title_page);
|
||||
METHOD_ADD(wf, PREFORM_DOCUMENT_FOR_MTID, TeX::preform_document);
|
||||
@h Rendering.
|
||||
At present, this renderer only makes the dialect of TeX needed for |pdftex|,
|
||||
which involves various extension commands: the curse of modern TeX is the
|
||||
combination of an outdated original, and a proliferation of non-canonical
|
||||
extensions, but |pdftex| is pretty good. All the same, we should perhaps
|
||||
consider adding LaTeX, or XeTeX.
|
||||
|
||||
@<Create PDF format@> =
|
||||
weave_format *wf = Formats::create_weave_format(I"PDF", I".tex");
|
||||
METHOD_ADD(wf, RENDER_FOR_MTID, TeX::render_PDF);
|
||||
METHOD_ADD(wf, CHAPTER_TP_FOR_MTID, TeX::chapter_title_page);
|
||||
METHOD_ADD(wf, PREFORM_DOCUMENT_FOR_MTID, TeX::preform_document);
|
||||
@e PDFTEX_TEX_FORM from 1
|
||||
|
||||
@h Methods.
|
||||
For documentation, see "Weave Fornats".
|
||||
=
|
||||
void TeX::render_TeX(weave_format *self, text_stream *OUT, heterogeneous_tree *tree) {
|
||||
TeX::render_inner(OUT, tree, PDFTEX_TEX_FORM);
|
||||
}
|
||||
|
||||
@ From here on, then, the renderer, which should generate TeX which is as
|
||||
generic as possible, but with special features depending on |trs->TeX_form|.
|
||||
|
||||
=
|
||||
typedef struct TeX_render_state {
|
||||
struct text_stream *OUT;
|
||||
struct weave_order *wv;
|
||||
int as_DVI;
|
||||
int as_PDF;
|
||||
int TeX_form;
|
||||
} TeX_render_state;
|
||||
|
||||
void TeX::render_TeX(weave_format *self, text_stream *OUT, heterogeneous_tree *tree) {
|
||||
TeX::render_inner(self, OUT, tree, FALSE, FALSE);
|
||||
}
|
||||
void TeX::render_DVI(weave_format *self, text_stream *OUT, heterogeneous_tree *tree) {
|
||||
TeX::render_inner(self, OUT, tree, TRUE, FALSE);
|
||||
}
|
||||
void TeX::render_PDF(weave_format *self, text_stream *OUT, heterogeneous_tree *tree) {
|
||||
TeX::render_inner(self, OUT, tree, FALSE, TRUE);
|
||||
}
|
||||
|
||||
void TeX::render_inner(weave_format *self, text_stream *OUT, heterogeneous_tree *tree, int as_dvi, int as_pdf) {
|
||||
void TeX::render_inner(text_stream *OUT, heterogeneous_tree *tree, int form) {
|
||||
weave_document_node *C = RETRIEVE_POINTER_weave_document_node(tree->root->content);
|
||||
TeX_render_state trs;
|
||||
trs.OUT = OUT;
|
||||
trs.wv = C->wv;
|
||||
trs.as_DVI = as_dvi;
|
||||
trs.as_PDF = as_pdf;
|
||||
trs.TeX_form = form;
|
||||
Trees::traverse_from(tree->root, &TeX::render_visit, (void *) &trs, 0);
|
||||
}
|
||||
|
||||
@ For the reason why footnotes are omitted, see below: they aren't really.
|
||||
|
||||
=
|
||||
int TeX::render_visit(tree_node *N, void *state, int L) {
|
||||
TeX_render_state *trs = (TeX_render_state *) state;
|
||||
text_stream *OUT = trs->OUT;
|
||||
if (N->type == weave_document_node_type) @<Render nothing@>
|
||||
if ((N->type == weave_document_node_type) ||
|
||||
(N->type == weave_body_node_type) ||
|
||||
(N->type == weave_chapter_title_page_node_type) ||
|
||||
(N->type == weave_chapter_footer_node_type) ||
|
||||
(N->type == weave_section_footer_node_type) ||
|
||||
(N->type == weave_audio_node_type) ||
|
||||
(N->type == weave_chapter_node_type) ||
|
||||
(N->type == weave_carousel_slide_node_type) ||
|
||||
(N->type == weave_begin_footnote_text_node_type)) @<Render nothing@>
|
||||
|
||||
else if (N->type == weave_head_node_type) @<Render head@>
|
||||
else if (N->type == weave_body_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_tail_node_type) @<Render tail@>
|
||||
else if (N->type == weave_verbatim_node_type) @<Render verbatim@>
|
||||
else if (N->type == weave_chapter_header_node_type) @<Render chapter header@>
|
||||
else if (N->type == weave_chapter_footer_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_section_header_node_type) @<Render header@>
|
||||
else if (N->type == weave_section_footer_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_section_purpose_node_type) @<Render purpose@>
|
||||
else if (N->type == weave_subheading_node_type) @<Render subheading@>
|
||||
else if (N->type == weave_bar_node_type) @<Render bar@>
|
||||
|
@ -81,25 +74,20 @@ int TeX::render_visit(tree_node *N, void *state, int L) {
|
|||
else if (N->type == weave_paragraph_heading_node_type) @<Render paragraph heading@>
|
||||
else if (N->type == weave_endnote_node_type) @<Render endnote@>
|
||||
else if (N->type == weave_figure_node_type) @<Render figure@>
|
||||
else if (N->type == weave_audio_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_material_node_type) @<Render material@>
|
||||
else if (N->type == weave_embed_node_type) @<Render embed@>
|
||||
else if (N->type == weave_pmac_node_type) @<Render pmac@>
|
||||
else if (N->type == weave_vskip_node_type) @<Render vskip@>
|
||||
else if (N->type == weave_chapter_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_section_node_type) @<Render section@>
|
||||
else if (N->type == weave_code_line_node_type) @<Render code line@>
|
||||
else if (N->type == weave_function_usage_node_type) @<Render function usage@>
|
||||
else if (N->type == weave_commentary_node_type) @<Render commentary@>
|
||||
else if (N->type == weave_carousel_slide_node_type) @<Render nothing@>
|
||||
else if (N->type == weave_toc_node_type) @<Render toc@>
|
||||
else if (N->type == weave_toc_line_node_type) @<Render toc line@>
|
||||
else if (N->type == weave_chapter_title_page_node_type) @<Render weave_chapter_title_page_node@>
|
||||
else if (N->type == weave_defn_node_type) @<Render defn@>
|
||||
else if (N->type == weave_source_code_node_type) @<Render source code@>
|
||||
else if (N->type == weave_url_node_type) @<Render URL@>
|
||||
else if (N->type == weave_footnote_cue_node_type) @<Render footnote cue@>
|
||||
else if (N->type == weave_begin_footnote_text_node_type) @<Render footnote text@>
|
||||
else if (N->type == weave_display_line_node_type) @<Render display line@>
|
||||
else if (N->type == weave_function_defn_node_type) @<Render function defn@>
|
||||
else if (N->type == weave_item_node_type) @<Render item@>
|
||||
|
@ -107,6 +95,7 @@ int TeX::render_visit(tree_node *N, void *state, int L) {
|
|||
else if (N->type == weave_inline_node_type) @<Render inline@>
|
||||
else if (N->type == weave_locale_node_type) @<Render locale@>
|
||||
else if (N->type == weave_maths_node_type) @<Render maths@>
|
||||
|
||||
else internal_error("unable to render unknown node");
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -122,20 +111,31 @@ int TeX::render_visit(tree_node *N, void *state, int L) {
|
|||
|
||||
@<Render chapter header@> =
|
||||
weave_chapter_header_node *C = RETRIEVE_POINTER_weave_chapter_header_node(N->content);
|
||||
if (Str::ne(C->chap->md->ch_range, I"S"))
|
||||
TeX::paragraph_heading(trs->wv->format, OUT, trs->wv, FIRST_IN_LINKED_LIST(section, C->chap->sections), NULL, C->chap->md->ch_title, 3, FALSE);
|
||||
if (Str::ne(C->chap->md->ch_range, I"S")) {
|
||||
TeX::general_heading(OUT, trs->wv,
|
||||
FIRST_IN_LINKED_LIST(section, C->chap->sections), NULL, C->chap->md->ch_title,
|
||||
3, FALSE);
|
||||
WRITE("%S\\medskip\n", C->chap->md->rubric);
|
||||
section *S;
|
||||
LOOP_OVER_LINKED_LIST(S, section, C->chap->sections) {
|
||||
WRITE("\\smallskip\\noindent ");
|
||||
if (trs->wv->pattern->number_sections) WRITE("%d. ", S->printed_number);
|
||||
WRITE("{\\it %S}\\qquad\n%S", S->md->sect_title, S->sect_purpose);
|
||||
}
|
||||
}
|
||||
|
||||
@<Render header@> =
|
||||
weave_section_header_node *C = RETRIEVE_POINTER_weave_section_header_node(N->content);
|
||||
TeX::paragraph_heading(trs->wv->format, OUT, trs->wv, C->sect, NULL, C->sect->md->sect_title, 2, FALSE);
|
||||
TeX::general_heading(OUT, trs->wv, C->sect, NULL,
|
||||
C->sect->md->sect_title, 2, FALSE);
|
||||
|
||||
@<Render purpose@> =
|
||||
weave_section_purpose_node *C = RETRIEVE_POINTER_weave_section_purpose_node(N->content);
|
||||
TeX::subheading(trs->wv->format, OUT, trs->wv, 2, C->purpose, NULL);
|
||||
WRITE("\\smallskip\\par\\noindent{\\it %S}\\smallskip\\noindent\n", C->purpose);
|
||||
|
||||
@<Render subheading@> =
|
||||
weave_subheading_node *C = RETRIEVE_POINTER_weave_subheading_node(N->content);
|
||||
TeX::subheading(trs->wv->format, OUT, trs->wv, 1, C->text, NULL);
|
||||
WRITE("\\par\\noindent{\\bf %S}\\mark{%S}\\medskip\n", C->text, NULL);
|
||||
|
||||
@<Render bar@> =
|
||||
WRITE("\\par\\medskip\\noindent\\hrule\\medskip\\noindent\n");
|
||||
|
@ -147,8 +147,10 @@ int TeX::render_visit(tree_node *N, void *state, int L) {
|
|||
WRITE("\n");
|
||||
|
||||
@<Render paragraph heading@> =
|
||||
weave_paragraph_heading_node *C = RETRIEVE_POINTER_weave_paragraph_heading_node(N->content);
|
||||
TeX::paragraph_heading(trs->wv->format, OUT, trs->wv, C->para->under_section, C->para, I"Dunno", 0, FALSE);
|
||||
weave_paragraph_heading_node *C =
|
||||
RETRIEVE_POINTER_weave_paragraph_heading_node(N->content);
|
||||
TeX::general_heading(OUT, trs->wv, C->para->under_section,
|
||||
C->para, I"", 0, FALSE);
|
||||
|
||||
@<Render endnote@> =
|
||||
WRITE("\\par\\noindent\\penalty10000\n");
|
||||
|
@ -165,19 +167,17 @@ having nothing better. All we're trying for is to insert a picture, scaled
|
|||
to a given width, into the text at the current position.
|
||||
|
||||
@<Render figure@> =
|
||||
if (trs->as_PDF) {
|
||||
weave_figure_node *C = RETRIEVE_POINTER_weave_figure_node(N->content);
|
||||
WRITE("\\pdfximage");
|
||||
if (C->w >= 0)
|
||||
WRITE(" width %d cm{../Figures/%S}\n", C->w, C->figname);
|
||||
else if (C->h >= 0)
|
||||
WRITE(" height %d cm{../Figures/%S}\n", C->h, C->figname);
|
||||
else
|
||||
WRITE("{../Figures/%S}\n", C->figname);
|
||||
WRITE("\\smallskip\\noindent"
|
||||
"\\hbox to\\hsize{\\hfill\\pdfrefximage \\pdflastximage\\hfill}"
|
||||
"\\smallskip\n");
|
||||
}
|
||||
weave_figure_node *C = RETRIEVE_POINTER_weave_figure_node(N->content);
|
||||
filename *F = Filenames::in(
|
||||
Pathnames::down(trs->wv->weave_web->md->path_to_web, I"Figures"),
|
||||
C->figname);
|
||||
WRITE("\\pdfximage");
|
||||
if (C->w >= 0) WRITE(" width %d cm{%f}\n", C->w/POINTS_PER_CM, F);
|
||||
else if (C->h >= 0) WRITE(" height %d cm{%f}\n", C->h/POINTS_PER_CM, F);
|
||||
else WRITE("{%f}\n", F);
|
||||
WRITE("\\smallskip\\noindent"
|
||||
"\\hbox to\\hsize{\\hfill\\pdfrefximage \\pdflastximage\\hfill}"
|
||||
"\\smallskip\n");
|
||||
|
||||
@<Render material@> =
|
||||
weave_material_node *C = RETRIEVE_POINTER_weave_material_node(N->content);
|
||||
|
@ -212,7 +212,7 @@ to a given width, into the text at the current position.
|
|||
WRITE("\\endlines\n");
|
||||
|
||||
@<Deal with a footnotes material node@> =
|
||||
@<Recurse tne renderer through children nodes@>;
|
||||
return FALSE;
|
||||
|
||||
@<Deal with a endnotes material node@> =
|
||||
@<Recurse tne renderer through children nodes@>;
|
||||
|
@ -239,11 +239,7 @@ to a given width, into the text at the current position.
|
|||
|
||||
@<Render pmac@> =
|
||||
weave_pmac_node *C = RETRIEVE_POINTER_weave_pmac_node(N->content);
|
||||
if (trs->as_PDF)
|
||||
TeX::para_macro_PDF_1(trs->wv->format, OUT, trs->wv, C->pmac, C->defn);
|
||||
TeX::para_macro(trs->wv->format, OUT, trs->wv, C->pmac, C->defn);
|
||||
if (trs->as_PDF)
|
||||
TeX::para_macro_PDF_2(trs->wv->format, OUT, trs->wv, C->pmac, C->defn);
|
||||
TeX::para_macro(OUT, trs->wv, C->pmac, C->defn);
|
||||
|
||||
@<Render vskip@> =
|
||||
weave_vskip_node *C = RETRIEVE_POINTER_weave_vskip_node(N->content);
|
||||
|
@ -263,14 +259,16 @@ to a given width, into the text at the current position.
|
|||
return FALSE;
|
||||
|
||||
@<Render function usage@> =
|
||||
weave_function_usage_node *C = RETRIEVE_POINTER_weave_function_usage_node(N->content);
|
||||
weave_function_usage_node *C =
|
||||
RETRIEVE_POINTER_weave_function_usage_node(N->content);
|
||||
WRITE("%S", C->fn->function_name);
|
||||
return FALSE;
|
||||
|
||||
@<Render commentary@> =
|
||||
weave_commentary_node *C = RETRIEVE_POINTER_weave_commentary_node(N->content);
|
||||
weave_commentary_node *C =
|
||||
RETRIEVE_POINTER_weave_commentary_node(N->content);
|
||||
if (C->in_code) WRITE(" |\\hfill{\\ttninepoint\\it ");
|
||||
TeX::commentary_text(NULL, OUT, trs->wv, C->text);
|
||||
TeX::commentary_text(OUT, trs->wv, C->text);
|
||||
if (C->in_code) WRITE("}|");
|
||||
|
||||
@<Render toc@> =
|
||||
|
@ -286,38 +284,75 @@ to a given width, into the text at the current position.
|
|||
weave_toc_line_node *C = RETRIEVE_POINTER_weave_toc_line_node(N->content);
|
||||
WRITE("%S~%S", C->text1, C->text2);
|
||||
|
||||
@<Render weave_chapter_title_page_node@> =
|
||||
weave_chapter_title_page_node *C = RETRIEVE_POINTER_weave_chapter_title_page_node(N->content);
|
||||
LOG("It was %d\n", C->allocation_id);
|
||||
|
||||
@<Render defn@> =
|
||||
weave_defn_node *C = RETRIEVE_POINTER_weave_defn_node(N->content);
|
||||
WRITE("|{\\ninebf %S} |", C->keyword);
|
||||
|
||||
@<Render source code@> =
|
||||
weave_source_code_node *C = RETRIEVE_POINTER_weave_source_code_node(N->content);
|
||||
weave_source_code_node *C =
|
||||
RETRIEVE_POINTER_weave_source_code_node(N->content);
|
||||
int starts = FALSE;
|
||||
if (N == N->parent->child) starts = TRUE;
|
||||
TeX::source_code(trs->wv->format, OUT, trs->wv,
|
||||
TeX::source_code(OUT, trs->wv,
|
||||
C->matter, C->colouring, starts);
|
||||
|
||||
@<Render URL@> =
|
||||
weave_url_node *C = RETRIEVE_POINTER_weave_url_node(N->content);
|
||||
WRITE("%S", C->url);
|
||||
|
||||
@ The TeX macro for footnotes means that the text has to accompany the cue,
|
||||
which is tricky for us now because the footnote text is somewhere else in
|
||||
the weave tree -- so, we go for a little walk:
|
||||
|
||||
@<Render footnote cue@> =
|
||||
weave_footnote_cue_node *C = RETRIEVE_POINTER_weave_footnote_cue_node(N->content);
|
||||
WRITE("[%S]", C->cue_text);
|
||||
WRITE("\\footnote{${}^{%S}$}{", C->cue_text);
|
||||
tree_node *M = N;
|
||||
while ((M) && (M->type != weave_paragraph_heading_node_type)) M = M->parent;
|
||||
if (M == NULL) internal_error("tree without section nodes");
|
||||
M = M->child;
|
||||
int found = FALSE;
|
||||
while (M) {
|
||||
if (M->type == weave_material_node_type) {
|
||||
weave_material_node *MC = RETRIEVE_POINTER_weave_material_node(M->content);
|
||||
if (MC->material_type == FOOTNOTES_MATERIAL) {
|
||||
tree_node *F = M->child;
|
||||
while (F) {
|
||||
if (F->type == weave_begin_footnote_text_node_type) {
|
||||
weave_begin_footnote_text_node *FC =
|
||||
RETRIEVE_POINTER_weave_begin_footnote_text_node(F->content);
|
||||
if (Str::eq(FC->cue_text, C->cue_text))
|
||||
@<Found the right footnote text at last@>;
|
||||
}
|
||||
F = F->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
M = M->next;
|
||||
}
|
||||
WRITE("}");
|
||||
if (found == FALSE) internal_error("cue without text");
|
||||
|
||||
@<Render footnote text@> =
|
||||
WRITE("\n");
|
||||
@ And so here's the text. Note that we render only its second and subsequent
|
||||
child nodes: that's because the first child is a copy of the footnote cue,
|
||||
and TeX renders that automatically.
|
||||
|
||||
(The TeX renderer otherwise ignores footnote texts, so if these nodes
|
||||
are not rendered here, they never will be.)
|
||||
|
||||
@<Found the right footnote text at last@> =
|
||||
for (tree_node *X = F->child->next; X; X = X->next)
|
||||
Trees::traverse_from(X, &TeX::render_visit, (void *) trs, L+1);
|
||||
found = TRUE;
|
||||
|
||||
@<Render display line@> =
|
||||
weave_display_line_node *C = RETRIEVE_POINTER_weave_display_line_node(N->content);
|
||||
weave_display_line_node *C =
|
||||
RETRIEVE_POINTER_weave_display_line_node(N->content);
|
||||
WRITE("\\quotesource{%S}\n", C->text);
|
||||
|
||||
@<Render function defn@> =
|
||||
weave_function_defn_node *C = RETRIEVE_POINTER_weave_function_defn_node(N->content);
|
||||
weave_function_defn_node *C =
|
||||
RETRIEVE_POINTER_weave_function_defn_node(N->content);
|
||||
TeX::change_colour_PDF(OUT, FUNCTION_COLOUR, TRUE);
|
||||
WRITE("%S", C->fn->function_name);
|
||||
TeX::change_colour_PDF(OUT, PLAIN_COLOUR, TRUE);
|
||||
|
@ -357,61 +392,9 @@ to a given width, into the text at the current position.
|
|||
for (tree_node *M = N->child; M; M = M->next)
|
||||
Trees::traverse_from(M, &TeX::render_visit, (void *) trs, L+1);
|
||||
|
||||
@ =
|
||||
int TeX::yes(weave_format *self, weave_order *wv) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ =
|
||||
void TeX::subheading(weave_format *self, text_stream *OUT, weave_order *wv,
|
||||
int level, text_stream *comment, text_stream *head) {
|
||||
switch (level) {
|
||||
case 1:
|
||||
WRITE("\\par\\noindent{\\bf %S}\\mark{%S}\\medskip\n",
|
||||
comment, head);
|
||||
break;
|
||||
case 2:
|
||||
WRITE("\\smallskip\\par\\noindent{\\it %S}\\smallskip\\noindent\n",
|
||||
comment);
|
||||
if (head) TeX::commentary_text(self, OUT, wv, head);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ =
|
||||
void TeX::toc(weave_format *self, text_stream *OUT, weave_order *wv, int stage,
|
||||
text_stream *text1, text_stream *text2, paragraph *P) {
|
||||
switch (stage) {
|
||||
case 1:
|
||||
WRITE("\\medskip\\hrule\\smallskip\\par\\noindent{\\usagefont ");
|
||||
break;
|
||||
case 2:
|
||||
WRITE("; ");
|
||||
break;
|
||||
case 3:
|
||||
WRITE("%S~%S", text1, text2);
|
||||
break;
|
||||
case 4:
|
||||
WRITE("}\\par\\medskip\\hrule\\bigskip\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ =
|
||||
void TeX::chapter_title_page(weave_format *self, text_stream *OUT, weave_order *wv,
|
||||
chapter *C) {
|
||||
WRITE("%S\\medskip\n", C->md->rubric);
|
||||
section *S;
|
||||
LOOP_OVER_LINKED_LIST(S, section, C->sections) {
|
||||
WRITE("\\smallskip\\noindent ");
|
||||
if (wv->pattern->number_sections) WRITE("%d. ", S->printed_number);
|
||||
WRITE("{\\it %S}\\qquad\n%S", S->md->sect_title, S->sect_purpose);
|
||||
}
|
||||
}
|
||||
|
||||
@ =
|
||||
text_stream *P_literal = NULL;
|
||||
void TeX::paragraph_heading(weave_format *self, text_stream *OUT, weave_order *wv,
|
||||
void TeX::general_heading(text_stream *OUT, weave_order *wv,
|
||||
section *S, paragraph *P, text_stream *heading_text, int weight, int no_skip) {
|
||||
text_stream *TeX_macro = NULL;
|
||||
@<Choose which TeX macro to use in order to typeset the new paragraph heading@>;
|
||||
|
@ -508,11 +491,12 @@ escape from code mode, escape it using a backslash, then re-enter code
|
|||
mode once again:
|
||||
|
||||
=
|
||||
void TeX::source_code(weave_format *self, text_stream *OUT, weave_order *wv,
|
||||
void TeX::source_code(text_stream *OUT, weave_order *wv,
|
||||
text_stream *matter, text_stream *colouring, int starts) {
|
||||
int current_colour = PLAIN_COLOUR, colour_wanted = PLAIN_COLOUR;
|
||||
for (int i=0; i < Str::len(matter); i++) {
|
||||
colour_wanted = Str::get_at(colouring, i); @<Adjust code colour as necessary@>;
|
||||
colour_wanted = Str::get_at(colouring, i);
|
||||
@<Adjust code colour as necessary@>;
|
||||
if (Str::get_at(matter, i) == '|') WRITE("|\\||");
|
||||
else WRITE("%c", Str::get_at(matter, i));
|
||||
}
|
||||
|
@ -556,11 +540,7 @@ In the PDF format, these three are all called, in sequence below; in TeX
|
|||
or DVI, only the middle one is.
|
||||
|
||||
=
|
||||
void TeX::para_macro_PDF_1(weave_format *self, text_stream *OUT, weave_order *wv,
|
||||
para_macro *pmac, int defn) {
|
||||
}
|
||||
void TeX::para_macro(weave_format *self, text_stream *OUT, weave_order *wv,
|
||||
para_macro *pmac, int defn) {
|
||||
void TeX::para_macro(text_stream *OUT, weave_order *wv, para_macro *pmac, int defn) {
|
||||
if (defn)
|
||||
WRITE("|\\pdfdest num %d fit ",
|
||||
pmac->allocation_id + 100);
|
||||
|
@ -578,18 +558,9 @@ void TeX::para_macro(weave_format *self, text_stream *OUT, weave_order *wv,
|
|||
else
|
||||
WRITE("\\pdfendlink|");
|
||||
}
|
||||
void TeX::para_macro_PDF_2(weave_format *self, text_stream *OUT, weave_order *wv,
|
||||
para_macro *pmac, int defn) {
|
||||
}
|
||||
|
||||
@ =
|
||||
void TeX::after_definitions(weave_format *self, text_stream *OUT, weave_order *wv) {
|
||||
WRITE("\\smallskip\n");
|
||||
}
|
||||
|
||||
@ =
|
||||
void TeX::commentary_text(weave_format *self, text_stream *OUT, weave_order *wv,
|
||||
text_stream *id) {
|
||||
void TeX::commentary_text(text_stream *OUT, weave_order *wv, text_stream *id) {
|
||||
int math_mode = FALSE;
|
||||
for (int i=0; i < Str::len(id); i++) {
|
||||
switch (Str::get_at(id, i)) {
|
||||
|
@ -610,26 +581,12 @@ void TeX::commentary_text(weave_format *self, text_stream *OUT, weave_order *wv,
|
|||
}
|
||||
}
|
||||
|
||||
@ =
|
||||
void TeX::locale(weave_format *self, text_stream *OUT, weave_order *wv,
|
||||
paragraph *par1, paragraph *par2) {
|
||||
WRITE("$\\%S$%S", par1->ornament, par1->paragraph_number);
|
||||
if (par2) WRITE("-%S", par2->paragraph_number);
|
||||
}
|
||||
|
||||
@ =
|
||||
void TeX::tail(weave_format *self, text_stream *OUT, weave_order *wv,
|
||||
text_stream *comment, section *S) {
|
||||
WRITE("%% %S\n", comment);
|
||||
WRITE("\\end\n");
|
||||
}
|
||||
|
||||
@ The following is called only when the language is InC, and the weave is of
|
||||
the special Preform grammar document.
|
||||
|
||||
=
|
||||
int TeX::preform_document(weave_format *self, text_stream *OUT, web *W, weave_order *wv,
|
||||
chapter *C, section *S, source_line *L, text_stream *matter,
|
||||
int TeX::preform_document(weave_format *self, text_stream *OUT, web *W,
|
||||
weave_order *wv, chapter *C, section *S, source_line *L, text_stream *matter,
|
||||
text_stream *concluding_comment) {
|
||||
if (L->preform_nonterminal_defined) {
|
||||
preform_production_count = 0;
|
||||
|
@ -663,9 +620,12 @@ int TeX::preform_document(weave_format *self, text_stream *OUT, web *W, weave_or
|
|||
@<Weave a line from the body of the nonterminal definition@> =
|
||||
TEMPORARY_TEXT(problem);
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, matter, L"Issue (%c*?) problem")) Str::copy(problem, mr.exp[0]);
|
||||
else if (Regexp::match(&mr, matter, L"FAIL_NONTERMINAL %+")) WRITE_TO(problem, "fail and skip");
|
||||
else if (Regexp::match(&mr, matter, L"FAIL_NONTERMINAL")) WRITE_TO(problem, "fail");
|
||||
if (Regexp::match(&mr, matter, L"Issue (%c*?) problem"))
|
||||
Str::copy(problem, mr.exp[0]);
|
||||
else if (Regexp::match(&mr, matter, L"FAIL_NONTERMINAL %+"))
|
||||
WRITE_TO(problem, "fail and skip");
|
||||
else if (Regexp::match(&mr, matter, L"FAIL_NONTERMINAL"))
|
||||
WRITE_TO(problem, "fail");
|
||||
preform_production_count++;
|
||||
WRITE_TO(matter, "|%S|", L->text_operand);
|
||||
while (Regexp::match(&mr, matter, L"(%c+?)|(%c+)")) {
|
||||
|
@ -697,284 +657,10 @@ int TeX::preform_document(weave_format *self, text_stream *OUT, web *W, weave_or
|
|||
else if (Str::len(concluding_comment) > 0) {
|
||||
WRITE(" \\hfill{\\ttninepoint\\it ");
|
||||
if (Str::len(concluding_comment) > 0)
|
||||
TeX::commentary_text(NULL, OUT, wv, concluding_comment);
|
||||
// Formats::text_comment(OUT, wv, concluding_comment);
|
||||
TeX::commentary_text(OUT, wv, concluding_comment);
|
||||
WRITE("}");
|
||||
}
|
||||
WRITE("\n");
|
||||
DISCARD_TEXT(label);
|
||||
DISCARD_TEXT(problem);
|
||||
Regexp::dispose_of(&mr);
|
||||
|
||||
@h Post-processing.
|
||||
|
||||
=
|
||||
void TeX::post_process_report(weave_format *self, weave_order *wv) {
|
||||
RunningTeX::report_on_post_processing(wv);
|
||||
}
|
||||
|
||||
@ =
|
||||
int TeX::post_process_substitute(weave_format *self, text_stream *OUT,
|
||||
weave_order *wv, text_stream *detail, weave_pattern *pattern) {
|
||||
return RunningTeX::substitute_post_processing_data(OUT, wv, detail);
|
||||
}
|
||||
|
||||
@h Removing math mode.
|
||||
"Math mode", in TeX jargon, is what happens when a mathematical formula
|
||||
is written inside dollar signs: in |Answer is $x+y^2$|, the math mode
|
||||
content is |x+y^2|. But since math mode doesn't (easily) exist in HTML,
|
||||
for example, we want to strip it out if the format is not TeX-related.
|
||||
To do this, the weaver calls the following.
|
||||
|
||||
=
|
||||
void TeX::remove_math_mode(OUTPUT_STREAM, text_stream *text) {
|
||||
TEMPORARY_TEXT(math_matter);
|
||||
TeX::remove_math_mode_range(math_matter, text, 0, Str::len(text)-1);
|
||||
WRITE("%S", math_matter);
|
||||
DISCARD_TEXT(math_matter);
|
||||
}
|
||||
|
||||
void TeX::remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int from, int to) {
|
||||
for (int i=from; i <= to; i++) {
|
||||
@<Remove the over construction@>;
|
||||
}
|
||||
for (int i=from; i <= to; i++) {
|
||||
@<Remove the rm and it constructions@>;
|
||||
@<Remove the sqrt constructions@>;
|
||||
}
|
||||
int math_mode = FALSE;
|
||||
for (int i=from; i <= to; i++) {
|
||||
switch (Str::get_at(text, i)) {
|
||||
case '$':
|
||||
if (Str::get_at(text, i+1) == '$') i++;
|
||||
math_mode = (math_mode)?FALSE:TRUE; break;
|
||||
case '~': if (math_mode) WRITE(" "); else WRITE("~"); break;
|
||||
case '\\': @<Do something to strip out a TeX macro@>; break;
|
||||
default: PUT(Str::get_at(text, i)); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ Here we remove |{{top}\over{bottom}}|, converting it to |((top) / (bottom))|.
|
||||
|
||||
@<Remove the over construction@> =
|
||||
if ((Str::get_at(text, i) == '\\') &&
|
||||
(Str::get_at(text, i+1) == 'o') && (Str::get_at(text, i+2) == 'v') &&
|
||||
(Str::get_at(text, i+3) == 'e') && (Str::get_at(text, i+4) == 'r') &&
|
||||
(Str::get_at(text, i+5) == '{')) {
|
||||
int bl = 1;
|
||||
int j = i-1;
|
||||
for (; j >= from; j--) {
|
||||
wchar_t c = Str::get_at(text, j);
|
||||
if (c == '{') {
|
||||
bl--;
|
||||
if (bl == 0) break;
|
||||
}
|
||||
if (c == '}') bl++;
|
||||
}
|
||||
TeX::remove_math_mode_range(OUT, text, from, j-1);
|
||||
WRITE("((");
|
||||
TeX::remove_math_mode_range(OUT, text, j+2, i-2);
|
||||
WRITE(") / (");
|
||||
j=i+6; bl = 1;
|
||||
for (; j <= to; j++) {
|
||||
wchar_t c = Str::get_at(text, j);
|
||||
if (c == '}') {
|
||||
bl--;
|
||||
if (bl == 0) break;
|
||||
}
|
||||
if (c == '{') bl++;
|
||||
}
|
||||
TeX::remove_math_mode_range(OUT, text, i+6, j-1);
|
||||
WRITE("))");
|
||||
TeX::remove_math_mode_range(OUT, text, j+2, to);
|
||||
return;
|
||||
}
|
||||
|
||||
@ Here we remove |{\rm text}|, converting it to |text|, and similarly |\it|.
|
||||
|
||||
@<Remove the rm and it constructions@> =
|
||||
if ((Str::get_at(text, i) == '{') && (Str::get_at(text, i+1) == '\\') &&
|
||||
(((Str::get_at(text, i+2) == 'r') && (Str::get_at(text, i+3) == 'm')) ||
|
||||
((Str::get_at(text, i+2) == 'i') && (Str::get_at(text, i+3) == 't'))) &&
|
||||
(Str::get_at(text, i+4) == ' ')) {
|
||||
TeX::remove_math_mode_range(OUT, text, from, i-1);
|
||||
int j=i+5;
|
||||
for (; j <= to; j++)
|
||||
if (Str::get_at(text, j) == '}')
|
||||
break;
|
||||
TeX::remove_math_mode_range(OUT, text, i+5, j-1);
|
||||
TeX::remove_math_mode_range(OUT, text, j+1, to);
|
||||
return;
|
||||
}
|
||||
|
||||
@ Here we remove |\sqrt{N}|, converting it to |sqrt(N)|. As a special case,
|
||||
we also look out for |{}^3\sqrt{N}| for cube root.
|
||||
|
||||
@<Remove the sqrt constructions@> =
|
||||
if ((Str::get_at(text, i) == '\\') &&
|
||||
(Str::get_at(text, i+1) == 's') && (Str::get_at(text, i+2) == 'q') &&
|
||||
(Str::get_at(text, i+3) == 'r') && (Str::get_at(text, i+4) == 't') &&
|
||||
(Str::get_at(text, i+5) == '{')) {
|
||||
if ((Str::get_at(text, i-4) == '{') &&
|
||||
(Str::get_at(text, i-3) == '}') &&
|
||||
(Str::get_at(text, i-2) == '^') &&
|
||||
(Str::get_at(text, i-1) == '3')) {
|
||||
TeX::remove_math_mode_range(OUT, text, from, i-5);
|
||||
WRITE(" curt(");
|
||||
} else {
|
||||
TeX::remove_math_mode_range(OUT, text, from, i-1);
|
||||
WRITE(" sqrt(");
|
||||
}
|
||||
int j=i+6, bl = 1;
|
||||
for (; j <= to; j++) {
|
||||
wchar_t c = Str::get_at(text, j);
|
||||
if (c == '}') {
|
||||
bl--;
|
||||
if (bl == 0) break;
|
||||
}
|
||||
if (c == '{') bl++;
|
||||
}
|
||||
TeX::remove_math_mode_range(OUT, text, i+6, j-1);
|
||||
WRITE(")");
|
||||
TeX::remove_math_mode_range(OUT, text, j+1, to);
|
||||
return;
|
||||
}
|
||||
|
||||
@<Do something to strip out a TeX macro@> =
|
||||
TEMPORARY_TEXT(macro);
|
||||
i++;
|
||||
while ((i < Str::len(text)) && (Characters::isalpha(Str::get_at(text, i))))
|
||||
PUT_TO(macro, Str::get_at(text, i++));
|
||||
if (Str::eq(macro, I"not")) @<Remove the not prefix@>
|
||||
else @<Remove a general macro@>;
|
||||
DISCARD_TEXT(macro);
|
||||
i--;
|
||||
|
||||
@<Remove a general macro@> =
|
||||
if (Str::eq(macro, I"leq")) WRITE("<=");
|
||||
else if (Str::eq(macro, I"geq")) WRITE(">=");
|
||||
else if (Str::eq(macro, I"sim")) WRITE("~");
|
||||
else if (Str::eq(macro, I"hbox")) WRITE("");
|
||||
else if (Str::eq(macro, I"left")) WRITE("");
|
||||
else if (Str::eq(macro, I"right")) WRITE("");
|
||||
else if (Str::eq(macro, I"Rightarrow")) WRITE("=>");
|
||||
else if (Str::eq(macro, I"Leftrightarrow")) WRITE("<=>");
|
||||
else if (Str::eq(macro, I"to")) WRITE("-->");
|
||||
else if (Str::eq(macro, I"rightarrow")) WRITE("-->");
|
||||
else if (Str::eq(macro, I"longrightarrow")) WRITE("-->");
|
||||
else if (Str::eq(macro, I"leftarrow")) WRITE("<--");
|
||||
else if (Str::eq(macro, I"longleftarrow")) WRITE("<--");
|
||||
else if (Str::eq(macro, I"lbrace")) WRITE("{");
|
||||
else if (Str::eq(macro, I"mid")) WRITE("|");
|
||||
else if (Str::eq(macro, I"rbrace")) WRITE("}");
|
||||
else if (Str::eq(macro, I"cdot")) WRITE(".");
|
||||
else if (Str::eq(macro, I"cdots")) WRITE("...");
|
||||
else if (Str::eq(macro, I"dots")) WRITE("...");
|
||||
else if (Str::eq(macro, I"times")) WRITE("*");
|
||||
else if (Str::eq(macro, I"quad")) WRITE(" ");
|
||||
else if (Str::eq(macro, I"qquad")) WRITE(" ");
|
||||
else if (Str::eq(macro, I"TeX")) WRITE("TeX");
|
||||
else if (Str::eq(macro, I"neq")) WRITE("!=");
|
||||
else if (Str::eq(macro, I"noteq")) WRITE("!=");
|
||||
else if (Str::eq(macro, I"ell")) WRITE("l");
|
||||
else if (Str::eq(macro, I"log")) WRITE("log");
|
||||
else if (Str::eq(macro, I"exp")) WRITE("exp");
|
||||
else if (Str::eq(macro, I"sin")) WRITE("sin");
|
||||
else if (Str::eq(macro, I"cos")) WRITE("cos");
|
||||
else if (Str::eq(macro, I"tan")) WRITE("tan");
|
||||
else if (Str::eq(macro, I"top")) WRITE("T");
|
||||
else if (Str::eq(macro, I"Alpha")) PUT((wchar_t) 0x0391);
|
||||
else if (Str::eq(macro, I"Beta")) PUT((wchar_t) 0x0392);
|
||||
else if (Str::eq(macro, I"Gamma")) PUT((wchar_t) 0x0393);
|
||||
else if (Str::eq(macro, I"Delta")) PUT((wchar_t) 0x0394);
|
||||
else if (Str::eq(macro, I"Epsilon")) PUT((wchar_t) 0x0395);
|
||||
else if (Str::eq(macro, I"Zeta")) PUT((wchar_t) 0x0396);
|
||||
else if (Str::eq(macro, I"Eta")) PUT((wchar_t) 0x0397);
|
||||
else if (Str::eq(macro, I"Theta")) PUT((wchar_t) 0x0398);
|
||||
else if (Str::eq(macro, I"Iota")) PUT((wchar_t) 0x0399);
|
||||
else if (Str::eq(macro, I"Kappa")) PUT((wchar_t) 0x039A);
|
||||
else if (Str::eq(macro, I"Lambda")) PUT((wchar_t) 0x039B);
|
||||
else if (Str::eq(macro, I"Mu")) PUT((wchar_t) 0x039C);
|
||||
else if (Str::eq(macro, I"Nu")) PUT((wchar_t) 0x039D);
|
||||
else if (Str::eq(macro, I"Xi")) PUT((wchar_t) 0x039E);
|
||||
else if (Str::eq(macro, I"Omicron")) PUT((wchar_t) 0x039F);
|
||||
else if (Str::eq(macro, I"Pi")) PUT((wchar_t) 0x03A0);
|
||||
else if (Str::eq(macro, I"Rho")) PUT((wchar_t) 0x03A1);
|
||||
else if (Str::eq(macro, I"Varsigma")) PUT((wchar_t) 0x03A2);
|
||||
else if (Str::eq(macro, I"Sigma")) PUT((wchar_t) 0x03A3);
|
||||
else if (Str::eq(macro, I"Tau")) PUT((wchar_t) 0x03A4);
|
||||
else if (Str::eq(macro, I"Upsilon")) PUT((wchar_t) 0x03A5);
|
||||
else if (Str::eq(macro, I"Phi")) PUT((wchar_t) 0x03A6);
|
||||
else if (Str::eq(macro, I"Chi")) PUT((wchar_t) 0x03A7);
|
||||
else if (Str::eq(macro, I"Psi")) PUT((wchar_t) 0x03A8);
|
||||
else if (Str::eq(macro, I"Omega")) PUT((wchar_t) 0x03A9);
|
||||
else if (Str::eq(macro, I"alpha")) PUT((wchar_t) 0x03B1);
|
||||
else if (Str::eq(macro, I"beta")) PUT((wchar_t) 0x03B2);
|
||||
else if (Str::eq(macro, I"gamma")) PUT((wchar_t) 0x03B3);
|
||||
else if (Str::eq(macro, I"delta")) PUT((wchar_t) 0x03B4);
|
||||
else if (Str::eq(macro, I"epsilon")) PUT((wchar_t) 0x03B5);
|
||||
else if (Str::eq(macro, I"zeta")) PUT((wchar_t) 0x03B6);
|
||||
else if (Str::eq(macro, I"eta")) PUT((wchar_t) 0x03B7);
|
||||
else if (Str::eq(macro, I"theta")) PUT((wchar_t) 0x03B8);
|
||||
else if (Str::eq(macro, I"iota")) PUT((wchar_t) 0x03B9);
|
||||
else if (Str::eq(macro, I"kappa")) PUT((wchar_t) 0x03BA);
|
||||
else if (Str::eq(macro, I"lambda")) PUT((wchar_t) 0x03BB);
|
||||
else if (Str::eq(macro, I"mu")) PUT((wchar_t) 0x03BC);
|
||||
else if (Str::eq(macro, I"nu")) PUT((wchar_t) 0x03BD);
|
||||
else if (Str::eq(macro, I"xi")) PUT((wchar_t) 0x03BE);
|
||||
else if (Str::eq(macro, I"omicron")) PUT((wchar_t) 0x03BF);
|
||||
else if (Str::eq(macro, I"pi")) PUT((wchar_t) 0x03C0);
|
||||
else if (Str::eq(macro, I"rho")) PUT((wchar_t) 0x03C1);
|
||||
else if (Str::eq(macro, I"varsigma")) PUT((wchar_t) 0x03C2);
|
||||
else if (Str::eq(macro, I"sigma")) PUT((wchar_t) 0x03C3);
|
||||
else if (Str::eq(macro, I"tau")) PUT((wchar_t) 0x03C4);
|
||||
else if (Str::eq(macro, I"upsilon")) PUT((wchar_t) 0x03C5);
|
||||
else if (Str::eq(macro, I"phi")) PUT((wchar_t) 0x03C6);
|
||||
else if (Str::eq(macro, I"chi")) PUT((wchar_t) 0x03C7);
|
||||
else if (Str::eq(macro, I"psi")) PUT((wchar_t) 0x03C8);
|
||||
else if (Str::eq(macro, I"omega")) PUT((wchar_t) 0x03C9);
|
||||
else if (Str::eq(macro, I"exists")) PUT((wchar_t) 0x2203);
|
||||
else if (Str::eq(macro, I"in")) PUT((wchar_t) 0x2208);
|
||||
else if (Str::eq(macro, I"forall")) PUT((wchar_t) 0x2200);
|
||||
else if (Str::eq(macro, I"cap")) PUT((wchar_t) 0x2229);
|
||||
else if (Str::eq(macro, I"emptyset")) PUT((wchar_t) 0x2205);
|
||||
else if (Str::eq(macro, I"subseteq")) PUT((wchar_t) 0x2286);
|
||||
else if (Str::eq(macro, I"land")) PUT((wchar_t) 0x2227);
|
||||
else if (Str::eq(macro, I"lor")) PUT((wchar_t) 0x2228);
|
||||
else if (Str::eq(macro, I"lnot")) PUT((wchar_t) 0x00AC);
|
||||
else if (Str::eq(macro, I"sum")) PUT((wchar_t) 0x03A3);
|
||||
else if (Str::eq(macro, I"prod")) PUT((wchar_t) 0x03A0);
|
||||
else {
|
||||
if (Str::len(macro) > 0) {
|
||||
int suspect = TRUE;
|
||||
LOOP_THROUGH_TEXT(pos, macro) {
|
||||
wchar_t c = Str::get(pos);
|
||||
if ((c >= 'A') && (c <= 'Z')) continue;
|
||||
if ((c >= 'a') && (c <= 'z')) continue;
|
||||
suspect = FALSE;
|
||||
}
|
||||
if (Str::eq(macro, I"n")) suspect = FALSE;
|
||||
if (Str::eq(macro, I"t")) suspect = FALSE;
|
||||
if (suspect)
|
||||
PRINT("[Passing through unknown TeX macro \\%S:\n %S\n", macro, text);
|
||||
}
|
||||
WRITE("\\%S", macro);
|
||||
}
|
||||
|
||||
@ For Inform's purposes, we need to deal with just |\not\exists| and |\not\forall|.
|
||||
|
||||
@<Remove the not prefix@> =
|
||||
if (Str::get_at(text, i) == '\\') {
|
||||
Str::clear(macro);
|
||||
i++;
|
||||
while ((i < Str::len(text)) && (Characters::isalpha(Str::get_at(text, i))))
|
||||
PUT_TO(macro, Str::get_at(text, i++));
|
||||
if (Str::eq(macro, I"exists")) PUT((wchar_t) 0x2204);
|
||||
else if (Str::eq(macro, I"forall")) { PUT((wchar_t) 0x00AC); PUT((wchar_t) 0x2200); }
|
||||
else {
|
||||
PRINT("Don't know how to apply '\\not' to '\\%S'\n", macro);
|
||||
}
|
||||
} else {
|
||||
PRINT("Don't know how to apply '\\not' here\n");
|
||||
}
|
||||
|
|
376
Chapter 5/TeX Utilities.w
Normal file
376
Chapter 5/TeX Utilities.w
Normal file
|
@ -0,0 +1,376 @@
|
|||
[TeXUtilities::] TeX Utilities.
|
||||
|
||||
A few conveniences for using Inweb with TeX.
|
||||
|
||||
@h Post-processing TeX console output.
|
||||
Pattern commands post-processing TeX tend to run TeX-like tools in
|
||||
"scrollmode", so that any errors whizz by rather than interrupting or halting
|
||||
the session. Prime among errors is the "overfull hbox error", a defect of TeX
|
||||
resulting from its inability to adjust letter spacing, so that it requires us
|
||||
to adjust the copy to fit the margins of the page properly. (In practice we
|
||||
get this here by having code lines which are too wide to display.)
|
||||
|
||||
Also, TeX helpfully reports the size and page count of what it produces, and
|
||||
we're not too proud to scrape that information out of the console file, besides
|
||||
the error messages (which begin with an exclamation mark in column 1).
|
||||
|
||||
This structure will store what we find:
|
||||
|
||||
=
|
||||
typedef struct tex_results {
|
||||
int overfull_hbox_count;
|
||||
int tex_error_count;
|
||||
int page_count;
|
||||
int pdf_size;
|
||||
struct filename *PDF_filename;
|
||||
MEMORY_MANAGEMENT
|
||||
} tex_results;
|
||||
|
||||
@ =
|
||||
tex_results *TeXUtilities::new_results(weave_order *wv, filename *CF) {
|
||||
tex_results *res = CREATE(tex_results);
|
||||
res->overfull_hbox_count = 0;
|
||||
res->tex_error_count = 0;
|
||||
res->page_count = 0;
|
||||
res->pdf_size = 0;
|
||||
res->PDF_filename = Filenames::set_extension(CF, I".pdf");
|
||||
return res;
|
||||
}
|
||||
|
||||
@ So, then, here's the function called from //Patterns// in response to
|
||||
the special |PROCESS| command:
|
||||
|
||||
=
|
||||
void TeXUtilities::post_process_weave(weave_order *wv, filename *CF) {
|
||||
wv->post_processing_results = TeXUtilities::new_results(wv, CF);
|
||||
TextFiles::read(CF, FALSE,
|
||||
"can't open console file", TRUE, TeXUtilities::scan_console_line, NULL,
|
||||
(void *) wv->post_processing_results);
|
||||
}
|
||||
|
||||
@ =
|
||||
void TeXUtilities::scan_console_line(text_stream *line, text_file_position *tfp,
|
||||
void *res_V) {
|
||||
tex_results *res = (tex_results *) res_V;
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, line,
|
||||
L"Output written %c*? %((%d+) page%c*?(%d+) bytes%).")) {
|
||||
res->page_count = Str::atoi(mr.exp[0], 0);
|
||||
res->pdf_size = Str::atoi(mr.exp[1], 0);
|
||||
}
|
||||
if (Regexp::match(&mr, line, L"%c+verfull \\hbox%c+"))
|
||||
res->overfull_hbox_count++;
|
||||
else if (Str::get_first_char(line) == '!') {
|
||||
res->tex_error_count++;
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
}
|
||||
|
||||
@h Reporting.
|
||||
|
||||
=
|
||||
void TeXUtilities::report_on_post_processing(weave_order *wv) {
|
||||
tex_results *res = wv->post_processing_results;
|
||||
if (res) {
|
||||
PRINT(": %dpp %dK", res->page_count, res->pdf_size/1024);
|
||||
if (res->overfull_hbox_count > 0)
|
||||
PRINT(", %d overfull hbox(es)", res->overfull_hbox_count);
|
||||
if (res->tex_error_count > 0)
|
||||
PRINT(", %d error(s)", res->tex_error_count);
|
||||
}
|
||||
}
|
||||
|
||||
@ And here are some details to do with the results of post-processing.
|
||||
|
||||
=
|
||||
int TeXUtilities::substitute_post_processing_data(text_stream *to, weave_order *wv,
|
||||
text_stream *detail) {
|
||||
if (wv) {
|
||||
tex_results *res = wv->post_processing_results;
|
||||
if (res) {
|
||||
if (Str::eq_wide_string(detail, L"PDF Size")) {
|
||||
WRITE_TO(to, "%dKB", res->pdf_size/1024);
|
||||
} else if (Str::eq_wide_string(detail, L"Extent")) {
|
||||
WRITE_TO(to, "%dpp", res->page_count);
|
||||
} else if (Str::eq_wide_string(detail, L"Leafname")) {
|
||||
Str::copy(to, Filenames::get_leafname(res->PDF_filename));
|
||||
} else if (Str::eq_wide_string(detail, L"Errors")) {
|
||||
Str::clear(to);
|
||||
if ((res->overfull_hbox_count > 0) || (res->tex_error_count > 0))
|
||||
WRITE_TO(to, ": ");
|
||||
if (res->overfull_hbox_count > 0)
|
||||
WRITE_TO(to, "%d overfull line%s",
|
||||
res->overfull_hbox_count,
|
||||
(res->overfull_hbox_count>1)?"s":"");
|
||||
if ((res->overfull_hbox_count > 0) && (res->tex_error_count > 0))
|
||||
WRITE_TO(to, ", ");
|
||||
if (res->tex_error_count > 0)
|
||||
WRITE_TO(to, "%d TeX error%s",
|
||||
res->tex_error_count,
|
||||
(res->tex_error_count>1)?"s":"");
|
||||
} else return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@h Removing math mode.
|
||||
"Math mode", in TeX jargon, is what happens when a mathematical formula
|
||||
is written inside dollar signs: in |Answer is $x+y^2$|, the math mode
|
||||
content is |x+y^2|. But since math mode doesn't (easily) exist in HTML,
|
||||
for example, we want to strip it out if the format is not TeX-related.
|
||||
To do this, the weaver calls the following.
|
||||
|
||||
=
|
||||
void TeXUtilities::remove_math_mode(OUTPUT_STREAM, text_stream *text) {
|
||||
TEMPORARY_TEXT(math_matter);
|
||||
TeXUtilities::remove_math_mode_range(math_matter, text, 0, Str::len(text)-1);
|
||||
WRITE("%S", math_matter);
|
||||
DISCARD_TEXT(math_matter);
|
||||
}
|
||||
|
||||
void TeXUtilities::remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int from, int to) {
|
||||
for (int i=from; i <= to; i++) {
|
||||
@<Remove the over construction@>;
|
||||
}
|
||||
for (int i=from; i <= to; i++) {
|
||||
@<Remove the rm and it constructions@>;
|
||||
@<Remove the sqrt constructions@>;
|
||||
}
|
||||
int math_mode = FALSE;
|
||||
for (int i=from; i <= to; i++) {
|
||||
switch (Str::get_at(text, i)) {
|
||||
case '$':
|
||||
if (Str::get_at(text, i+1) == '$') i++;
|
||||
math_mode = (math_mode)?FALSE:TRUE; break;
|
||||
case '~': if (math_mode) WRITE(" "); else WRITE("~"); break;
|
||||
case '\\': @<Do something to strip out a TeX macro@>; break;
|
||||
default: PUT(Str::get_at(text, i)); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ Here we remove |{{top}\over{bottom}}|, converting it to |((top) / (bottom))|.
|
||||
|
||||
@<Remove the over construction@> =
|
||||
if ((Str::get_at(text, i) == '\\') &&
|
||||
(Str::get_at(text, i+1) == 'o') && (Str::get_at(text, i+2) == 'v') &&
|
||||
(Str::get_at(text, i+3) == 'e') && (Str::get_at(text, i+4) == 'r') &&
|
||||
(Str::get_at(text, i+5) == '{')) {
|
||||
int bl = 1;
|
||||
int j = i-1;
|
||||
for (; j >= from; j--) {
|
||||
wchar_t c = Str::get_at(text, j);
|
||||
if (c == '{') {
|
||||
bl--;
|
||||
if (bl == 0) break;
|
||||
}
|
||||
if (c == '}') bl++;
|
||||
}
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, from, j-1);
|
||||
WRITE("((");
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, j+2, i-2);
|
||||
WRITE(") / (");
|
||||
j=i+6; bl = 1;
|
||||
for (; j <= to; j++) {
|
||||
wchar_t c = Str::get_at(text, j);
|
||||
if (c == '}') {
|
||||
bl--;
|
||||
if (bl == 0) break;
|
||||
}
|
||||
if (c == '{') bl++;
|
||||
}
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, i+6, j-1);
|
||||
WRITE("))");
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, j+2, to);
|
||||
return;
|
||||
}
|
||||
|
||||
@ Here we remove |{\rm text}|, converting it to |text|, and similarly |\it|.
|
||||
|
||||
@<Remove the rm and it constructions@> =
|
||||
if ((Str::get_at(text, i) == '{') && (Str::get_at(text, i+1) == '\\') &&
|
||||
(((Str::get_at(text, i+2) == 'r') && (Str::get_at(text, i+3) == 'm')) ||
|
||||
((Str::get_at(text, i+2) == 'i') && (Str::get_at(text, i+3) == 't'))) &&
|
||||
(Str::get_at(text, i+4) == ' ')) {
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, from, i-1);
|
||||
int j=i+5;
|
||||
for (; j <= to; j++)
|
||||
if (Str::get_at(text, j) == '}')
|
||||
break;
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, i+5, j-1);
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, j+1, to);
|
||||
return;
|
||||
}
|
||||
|
||||
@ Here we remove |\sqrt{N}|, converting it to |sqrt(N)|. As a special case,
|
||||
we also look out for |{}^3\sqrt{N}| for cube root.
|
||||
|
||||
@<Remove the sqrt constructions@> =
|
||||
if ((Str::get_at(text, i) == '\\') &&
|
||||
(Str::get_at(text, i+1) == 's') && (Str::get_at(text, i+2) == 'q') &&
|
||||
(Str::get_at(text, i+3) == 'r') && (Str::get_at(text, i+4) == 't') &&
|
||||
(Str::get_at(text, i+5) == '{')) {
|
||||
if ((Str::get_at(text, i-4) == '{') &&
|
||||
(Str::get_at(text, i-3) == '}') &&
|
||||
(Str::get_at(text, i-2) == '^') &&
|
||||
(Str::get_at(text, i-1) == '3')) {
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, from, i-5);
|
||||
WRITE(" curt(");
|
||||
} else {
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, from, i-1);
|
||||
WRITE(" sqrt(");
|
||||
}
|
||||
int j=i+6, bl = 1;
|
||||
for (; j <= to; j++) {
|
||||
wchar_t c = Str::get_at(text, j);
|
||||
if (c == '}') {
|
||||
bl--;
|
||||
if (bl == 0) break;
|
||||
}
|
||||
if (c == '{') bl++;
|
||||
}
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, i+6, j-1);
|
||||
WRITE(")");
|
||||
TeXUtilities::remove_math_mode_range(OUT, text, j+1, to);
|
||||
return;
|
||||
}
|
||||
|
||||
@<Do something to strip out a TeX macro@> =
|
||||
TEMPORARY_TEXT(macro);
|
||||
i++;
|
||||
while ((i < Str::len(text)) && (Characters::isalpha(Str::get_at(text, i))))
|
||||
PUT_TO(macro, Str::get_at(text, i++));
|
||||
if (Str::eq(macro, I"not")) @<Remove the not prefix@>
|
||||
else @<Remove a general macro@>;
|
||||
DISCARD_TEXT(macro);
|
||||
i--;
|
||||
|
||||
@<Remove a general macro@> =
|
||||
if (Str::eq(macro, I"leq")) WRITE("<=");
|
||||
else if (Str::eq(macro, I"geq")) WRITE(">=");
|
||||
else if (Str::eq(macro, I"sim")) WRITE("~");
|
||||
else if (Str::eq(macro, I"hbox")) WRITE("");
|
||||
else if (Str::eq(macro, I"left")) WRITE("");
|
||||
else if (Str::eq(macro, I"right")) WRITE("");
|
||||
else if (Str::eq(macro, I"Rightarrow")) WRITE("=>");
|
||||
else if (Str::eq(macro, I"Leftrightarrow")) WRITE("<=>");
|
||||
else if (Str::eq(macro, I"to")) WRITE("-->");
|
||||
else if (Str::eq(macro, I"rightarrow")) WRITE("-->");
|
||||
else if (Str::eq(macro, I"longrightarrow")) WRITE("-->");
|
||||
else if (Str::eq(macro, I"leftarrow")) WRITE("<--");
|
||||
else if (Str::eq(macro, I"longleftarrow")) WRITE("<--");
|
||||
else if (Str::eq(macro, I"lbrace")) WRITE("{");
|
||||
else if (Str::eq(macro, I"mid")) WRITE("|");
|
||||
else if (Str::eq(macro, I"rbrace")) WRITE("}");
|
||||
else if (Str::eq(macro, I"cdot")) WRITE(".");
|
||||
else if (Str::eq(macro, I"cdots")) WRITE("...");
|
||||
else if (Str::eq(macro, I"dots")) WRITE("...");
|
||||
else if (Str::eq(macro, I"times")) WRITE("*");
|
||||
else if (Str::eq(macro, I"quad")) WRITE(" ");
|
||||
else if (Str::eq(macro, I"qquad")) WRITE(" ");
|
||||
else if (Str::eq(macro, I"TeX")) WRITE("TeX");
|
||||
else if (Str::eq(macro, I"neq")) WRITE("!=");
|
||||
else if (Str::eq(macro, I"noteq")) WRITE("!=");
|
||||
else if (Str::eq(macro, I"ell")) WRITE("l");
|
||||
else if (Str::eq(macro, I"log")) WRITE("log");
|
||||
else if (Str::eq(macro, I"exp")) WRITE("exp");
|
||||
else if (Str::eq(macro, I"sin")) WRITE("sin");
|
||||
else if (Str::eq(macro, I"cos")) WRITE("cos");
|
||||
else if (Str::eq(macro, I"tan")) WRITE("tan");
|
||||
else if (Str::eq(macro, I"top")) WRITE("T");
|
||||
else if (Str::eq(macro, I"Alpha")) PUT((wchar_t) 0x0391);
|
||||
else if (Str::eq(macro, I"Beta")) PUT((wchar_t) 0x0392);
|
||||
else if (Str::eq(macro, I"Gamma")) PUT((wchar_t) 0x0393);
|
||||
else if (Str::eq(macro, I"Delta")) PUT((wchar_t) 0x0394);
|
||||
else if (Str::eq(macro, I"Epsilon")) PUT((wchar_t) 0x0395);
|
||||
else if (Str::eq(macro, I"Zeta")) PUT((wchar_t) 0x0396);
|
||||
else if (Str::eq(macro, I"Eta")) PUT((wchar_t) 0x0397);
|
||||
else if (Str::eq(macro, I"Theta")) PUT((wchar_t) 0x0398);
|
||||
else if (Str::eq(macro, I"Iota")) PUT((wchar_t) 0x0399);
|
||||
else if (Str::eq(macro, I"Kappa")) PUT((wchar_t) 0x039A);
|
||||
else if (Str::eq(macro, I"Lambda")) PUT((wchar_t) 0x039B);
|
||||
else if (Str::eq(macro, I"Mu")) PUT((wchar_t) 0x039C);
|
||||
else if (Str::eq(macro, I"Nu")) PUT((wchar_t) 0x039D);
|
||||
else if (Str::eq(macro, I"Xi")) PUT((wchar_t) 0x039E);
|
||||
else if (Str::eq(macro, I"Omicron")) PUT((wchar_t) 0x039F);
|
||||
else if (Str::eq(macro, I"Pi")) PUT((wchar_t) 0x03A0);
|
||||
else if (Str::eq(macro, I"Rho")) PUT((wchar_t) 0x03A1);
|
||||
else if (Str::eq(macro, I"Varsigma")) PUT((wchar_t) 0x03A2);
|
||||
else if (Str::eq(macro, I"Sigma")) PUT((wchar_t) 0x03A3);
|
||||
else if (Str::eq(macro, I"Tau")) PUT((wchar_t) 0x03A4);
|
||||
else if (Str::eq(macro, I"Upsilon")) PUT((wchar_t) 0x03A5);
|
||||
else if (Str::eq(macro, I"Phi")) PUT((wchar_t) 0x03A6);
|
||||
else if (Str::eq(macro, I"Chi")) PUT((wchar_t) 0x03A7);
|
||||
else if (Str::eq(macro, I"Psi")) PUT((wchar_t) 0x03A8);
|
||||
else if (Str::eq(macro, I"Omega")) PUT((wchar_t) 0x03A9);
|
||||
else if (Str::eq(macro, I"alpha")) PUT((wchar_t) 0x03B1);
|
||||
else if (Str::eq(macro, I"beta")) PUT((wchar_t) 0x03B2);
|
||||
else if (Str::eq(macro, I"gamma")) PUT((wchar_t) 0x03B3);
|
||||
else if (Str::eq(macro, I"delta")) PUT((wchar_t) 0x03B4);
|
||||
else if (Str::eq(macro, I"epsilon")) PUT((wchar_t) 0x03B5);
|
||||
else if (Str::eq(macro, I"zeta")) PUT((wchar_t) 0x03B6);
|
||||
else if (Str::eq(macro, I"eta")) PUT((wchar_t) 0x03B7);
|
||||
else if (Str::eq(macro, I"theta")) PUT((wchar_t) 0x03B8);
|
||||
else if (Str::eq(macro, I"iota")) PUT((wchar_t) 0x03B9);
|
||||
else if (Str::eq(macro, I"kappa")) PUT((wchar_t) 0x03BA);
|
||||
else if (Str::eq(macro, I"lambda")) PUT((wchar_t) 0x03BB);
|
||||
else if (Str::eq(macro, I"mu")) PUT((wchar_t) 0x03BC);
|
||||
else if (Str::eq(macro, I"nu")) PUT((wchar_t) 0x03BD);
|
||||
else if (Str::eq(macro, I"xi")) PUT((wchar_t) 0x03BE);
|
||||
else if (Str::eq(macro, I"omicron")) PUT((wchar_t) 0x03BF);
|
||||
else if (Str::eq(macro, I"pi")) PUT((wchar_t) 0x03C0);
|
||||
else if (Str::eq(macro, I"rho")) PUT((wchar_t) 0x03C1);
|
||||
else if (Str::eq(macro, I"varsigma")) PUT((wchar_t) 0x03C2);
|
||||
else if (Str::eq(macro, I"sigma")) PUT((wchar_t) 0x03C3);
|
||||
else if (Str::eq(macro, I"tau")) PUT((wchar_t) 0x03C4);
|
||||
else if (Str::eq(macro, I"upsilon")) PUT((wchar_t) 0x03C5);
|
||||
else if (Str::eq(macro, I"phi")) PUT((wchar_t) 0x03C6);
|
||||
else if (Str::eq(macro, I"chi")) PUT((wchar_t) 0x03C7);
|
||||
else if (Str::eq(macro, I"psi")) PUT((wchar_t) 0x03C8);
|
||||
else if (Str::eq(macro, I"omega")) PUT((wchar_t) 0x03C9);
|
||||
else if (Str::eq(macro, I"exists")) PUT((wchar_t) 0x2203);
|
||||
else if (Str::eq(macro, I"in")) PUT((wchar_t) 0x2208);
|
||||
else if (Str::eq(macro, I"forall")) PUT((wchar_t) 0x2200);
|
||||
else if (Str::eq(macro, I"cap")) PUT((wchar_t) 0x2229);
|
||||
else if (Str::eq(macro, I"emptyset")) PUT((wchar_t) 0x2205);
|
||||
else if (Str::eq(macro, I"subseteq")) PUT((wchar_t) 0x2286);
|
||||
else if (Str::eq(macro, I"land")) PUT((wchar_t) 0x2227);
|
||||
else if (Str::eq(macro, I"lor")) PUT((wchar_t) 0x2228);
|
||||
else if (Str::eq(macro, I"lnot")) PUT((wchar_t) 0x00AC);
|
||||
else if (Str::eq(macro, I"sum")) PUT((wchar_t) 0x03A3);
|
||||
else if (Str::eq(macro, I"prod")) PUT((wchar_t) 0x03A0);
|
||||
else {
|
||||
if (Str::len(macro) > 0) {
|
||||
int suspect = TRUE;
|
||||
LOOP_THROUGH_TEXT(pos, macro) {
|
||||
wchar_t c = Str::get(pos);
|
||||
if ((c >= 'A') && (c <= 'Z')) continue;
|
||||
if ((c >= 'a') && (c <= 'z')) continue;
|
||||
suspect = FALSE;
|
||||
}
|
||||
if (Str::eq(macro, I"n")) suspect = FALSE;
|
||||
if (Str::eq(macro, I"t")) suspect = FALSE;
|
||||
if (suspect)
|
||||
PRINT("[Passing through unknown TeX macro \\%S:\n %S\n", macro, text);
|
||||
}
|
||||
WRITE("\\%S", macro);
|
||||
}
|
||||
|
||||
@ For Inform's purposes, we need to deal with just |\not\exists| and |\not\forall|.
|
||||
|
||||
@<Remove the not prefix@> =
|
||||
if (Str::get_at(text, i) == '\\') {
|
||||
Str::clear(macro);
|
||||
i++;
|
||||
while ((i < Str::len(text)) && (Characters::isalpha(Str::get_at(text, i))))
|
||||
PUT_TO(macro, Str::get_at(text, i++));
|
||||
if (Str::eq(macro, I"exists")) PUT((wchar_t) 0x2204);
|
||||
else if (Str::eq(macro, I"forall")) { PUT((wchar_t) 0x00AC); PUT((wchar_t) 0x2200); }
|
||||
else {
|
||||
PRINT("Don't know how to apply '\\not' to '\\%S'\n", macro);
|
||||
}
|
||||
} else {
|
||||
PRINT("Don't know how to apply '\\not' here\n");
|
||||
}
|
|
@ -71,7 +71,7 @@ Chapter 5: Formats
|
|||
HTML Formats
|
||||
Debugging Format
|
||||
Weave Plugins
|
||||
Running Through TeX
|
||||
TeX Utilities
|
||||
|
||||
Chapter 6: Extras
|
||||
"Additional features for turning webs into open-source projects."
|
||||
|
|
|
@ -4,5 +4,3 @@ command: pdftex -output-directory=WOVENPATH -interaction=scrollmode WOVEN.tex >W
|
|||
command: PROCESS WOVEN.log
|
||||
command: rm WOVEN.log
|
||||
command: rm WOVEN.console
|
||||
command: bbedit WOVEN.tex
|
||||
command: open WOVEN.pdf
|
||||
|
|
2071
Tangled/inweb.c
2071
Tangled/inweb.c
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -247,27 +247,27 @@
|
|||
\weavesection{1}{Dunno}{\quad$\S$1}{\S}{S/sp}%
|
||||
On 7 June 1742, Christian Goldbach wrote a letter from Moscow to Leonhard
|
||||
Euler in Berlin making ``eine conjecture hazardiren'' that every even number
|
||||
greater than $2$ can be written as a sum of two primes.[1] Euler did not
|
||||
know if this was true, and nor does anyone else.
|
||||
Goldbach, a professor at St Petersburg and tutor to Tsar Peter II, wrote in
|
||||
several languages in an elegant cursive script, and was much valued as a
|
||||
letter-writer, though his reputation stands less high today.[2] All the same,
|
||||
the general belief now is that primes are just plentiful enough, and just
|
||||
evenly-enough spread, for Goldbach to be right. It is known that:
|
||||
\item{(a)}every even number is a sum of at most six primes (Ramaré, 1995), and
|
||||
\item{(b)}every odd number is a sum of at most five (Tao, 2012).
|
||||
|
||||
|
||||
[1] ``Greater than 2'' is our later proviso: Goldbach needed no such exception
|
||||
greater than $2$ can be written as a sum of two primes.\footnote{${}^{1}$}{ ``Greater than 2'' is our later proviso: Goldbach needed no such exception
|
||||
because he considered 1 a prime number, as was normal then, and was sometimes
|
||||
said as late as the early twentieth century.
|
||||
|
||||
[2] Goldbach, almost exactly a contemporary of Voltaire, was a good citizen
|
||||
} Euler did not
|
||||
know if this was true, and nor does anyone else.
|
||||
\pdfximage height 10 cm{inweb/Examples/goldbach/Figures/Letter.jpg}
|
||||
\smallskip\noindent\hbox to\hsize{\hfill\pdfrefximage \pdflastximage\hfill}\smallskip
|
||||
Goldbach, a professor at St Petersburg and tutor to Tsar Peter II, wrote in
|
||||
several languages in an elegant cursive script, and was much valued as a
|
||||
letter-writer, though his reputation stands less high today.\footnote{${}^{2}$}{ Goldbach, almost exactly a contemporary of Voltaire, was a good citizen
|
||||
of the great age of Enlightenment letter-writing. He and Euler exchanged
|
||||
scholarly letters for over thirty years, not something Euler would have
|
||||
kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer.
|
||||
See: http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html
|
||||
An edited transcription of the letter is at: http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf
|
||||
} All the same,
|
||||
the general belief now is that primes are just plentiful enough, and just
|
||||
evenly-enough spread, for Goldbach to be right. It is known that:
|
||||
\item{(a)}every even number is a sum of at most six primes (Ramaré, 1995), and
|
||||
\item{(b)}every odd number is a sum of at most five (Tao, 2012).
|
||||
|
||||
\weavesection{2}{Dunno}{\quad$\S$2}{\S}{S/sp}%
|
||||
Computer verification has been made up to around $10^{18}$, but by rather
|
||||
better methods than the one we use here. We will only go up to:
|
||||
|
|
|
@ -285,7 +285,7 @@ completes.
|
|||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::includes_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PROCESS "</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">last_F</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-rtt.html#SP2" class="function-link"><span class="function-syntax">RunningTeX::post_process_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">last_F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP3" class="function-link"><span class="function-syntax">TeXUtilities::post_process_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">last_F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"(%S)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cmd</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-shl.html#SP5" class="function-link"><span class="function-syntax">Shell::run</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -105,7 +105,7 @@ the call comes from Program Control).
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tw.html#SP1" class="function-link"><span class="function-syntax">Weaver::weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="comment-syntax"> i.e., the number of lines woven was zero</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"empty weave request"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP5" class="function-link"><span class="function-syntax">Patterns::post_process</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-fm.html#SP8" class="function-link"><span class="function-syntax">Formats::post_process_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">open_afterwards</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-fm.html#SP7" class="function-link"><span class="function-syntax">Formats::post_process_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">open_afterwards</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-ts.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Report on the outcome of the weave to the console</span><span class="named-paragraph-number">2.3</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">wv</span><span class="plain-syntax">;</span>
|
||||
|
@ -135,7 +135,7 @@ the call comes from Program Control).
|
|||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure weave_order is accessed in 1/cnf, 1/ptt, 3/tc, 3/tw, 3/twot, 4/is, 5/fm, 5/tf, 5/hf, 5/rtt, 6/cln and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure weave_order is accessed in 1/cnf, 1/ptt, 3/tc, 3/tw, 3/twot, 4/is, 5/fm, 5/tf, 5/hf, 5/tu, 6/cln and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2"></a><b>§2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile a set of instructions for the weaver</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
|
@ -248,7 +248,7 @@ and details of any cover-sheet to use.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"[%S: %S -> %f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">booklet_title</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">format</span><span class="plain-syntax">-></span><span class="element-syntax">format_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">weave_to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-fm.html#SP9" class="function-link"><span class="function-syntax">Formats::report_on_post_processing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-fm.html#SP8" class="function-link"><span class="function-syntax">Formats::report_on_post_processing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"]\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-ts.html#SP2">§2</a>.</li></ul>
|
||||
|
|
|
@ -565,7 +565,7 @@ use this.)
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">swarm_leader</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-fm.html#SP10" class="function-link"><span class="function-syntax">Formats::substitute_post_processing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">substituted</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-fm.html#SP9" class="function-link"><span class="function-syntax">Formats::substitute_post_processing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">substituted</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">swarm_leader</span><span class="plain-syntax">, </span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">nav_pattern</span><span class="plain-syntax">) == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">substituted</span><span class="plain-syntax">, </span><span class="string-syntax">"%S for complete web"</span><span class="plain-syntax">, </span><span class="identifier-syntax">detail</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
|
@ -595,7 +595,7 @@ use this.)
|
|||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP17" class="function-link"><span class="function-syntax">Str::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">substituted</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">ch_range</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP22" class="function-link"><span class="function-syntax">Str::eq_wide_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Purpose"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP17" class="function-link"><span class="function-syntax">Str::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">substituted</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">rubric</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-fm.html#SP10" class="function-link"><span class="function-syntax">Formats::substitute_post_processing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">substituted</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-fm.html#SP9" class="function-link"><span class="function-syntax">Formats::substitute_post_processing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">substituted</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">ch_weave</span><span class="plain-syntax">, </span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">nav_pattern</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> ;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
@ -640,7 +640,7 @@ use this.)
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">denom</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">sect_paragraphs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">denom</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">denom</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">substituted</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">sect_extent</span><span class="plain-syntax">/</span><span class="identifier-syntax">denom</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-fm.html#SP10" class="function-link"><span class="function-syntax">Formats::substitute_post_processing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">substituted</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-fm.html#SP9" class="function-link"><span class="function-syntax">Formats::substitute_post_processing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">substituted</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="identifier-syntax">sect_weave</span><span class="plain-syntax">, </span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">nav_pattern</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> ;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
|
|
@ -1065,7 +1065,7 @@ nonterminal definitions:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InCSupport::weave_grammar_index</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">InCSupport::weave_grammar_index</span></span>:<br>TeX Format - <a href="5-tf.html#SP2_34">§2.34</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InCSupport::weave_grammar_index</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">InCSupport::weave_grammar_index</span></span>:<br>TeX Format - <a href="5-tf.html#SP4_32">§4.32</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\\raggedright\\tolerance=10000"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">preform_nonterminal</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pnt</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pnt</span><span class="plain-syntax"> = </span><span class="identifier-syntax">alphabetical_list_of_nonterminals</span><span class="plain-syntax">; </span><span class="identifier-syntax">pnt</span><span class="plain-syntax">;</span>
|
||||
|
@ -1171,7 +1171,7 @@ of C code which appear in <span class="extract"><span class="extract-syntax">int
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">chapter</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">concluding_comment</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Preform_theme</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">theme_match</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Preform_theme</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-fm.html#SP7" class="function-link"><span class="function-syntax">Formats::preform_document</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-fm.html#SP6" class="function-link"><span class="function-syntax">Formats::preform_document</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">concluding_comment</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -46,7 +46,7 @@ function togglePopup(material_id) {
|
|||
<!--Weave of 'Format Methods' generated by Inweb-->
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#5">Chapter 5: Formats</a></li><li><b>Format Methods</b></li></ul><p class="purpose">To characterise the relevant differences in behaviour between the various weaving formats offered, such as HTML, ePub, or TeX.</p>
|
||||
|
||||
<ul class="toc"><li><a href="5-fm.html#SP1">§1. Formats</a></li><li><a href="5-fm.html#SP3">§3. Creation</a></li><li><a href="5-fm.html#SP4">§4. Methods</a></li><li><a href="5-fm.html#SP8">§8. Post-processing</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-fm.html#SP1">§1. Formats</a></li><li><a href="5-fm.html#SP3">§3. Creation</a></li><li><a href="5-fm.html#SP4">§4. Methods</a></li><li><a href="5-fm.html#SP7">§7. Post-processing</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Formats. </b>Exactly as in the previous chapter, each format expresses its behaviour
|
||||
through optional method calls.
|
||||
|
@ -60,7 +60,7 @@ through optional method calls.
|
|||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">weave_format</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="function-syntax">Formats::create_weave_format</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Formats::create_weave_format</span></span>:<br>Plain Text Format - <a href="5-ptf.html#SP1">§1</a><br>TeX Format - <a href="5-tf.html#SP1_1">§1.1</a>, <a href="5-tf.html#SP1_2">§1.2</a>, <a href="5-tf.html#SP1_3">§1.3</a><br>HTML Formats - <a href="5-hf.html#SP1_1">§1.1</a>, <a href="5-hf.html#SP1_2">§1.2</a><br>Debugging Format - <a href="5-df.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="function-syntax">Formats::create_weave_format</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Formats::create_weave_format</span></span>:<br>Plain Text Format - <a href="5-ptf.html#SP1">§1</a><br>TeX Format - <a href="5-tf.html#SP1">§1</a><br>HTML Formats - <a href="5-hf.html#SP1_1">§1.1</a>, <a href="5-hf.html#SP1_2">§1.2</a><br>Debugging Format - <a href="5-df.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_format</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wf</span><span class="plain-syntax">-></span><span class="element-syntax">format_name</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wf</span><span class="plain-syntax">-></span><span class="element-syntax">woven_extension</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">);</span>
|
||||
|
@ -158,21 +158,7 @@ actual content.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">template</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. </b>When whole chapters are wovem, or all-in-one weaves include multiple
|
||||
chapters, the format can add a table of chapter contents, or some similar
|
||||
interstitial material. This is how:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">CHAPTER_TP_FOR_MTID</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">VMETHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">CHAPTER_TP_FOR_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wf</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">chapter</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">)</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Formats::chapter_title_page</span><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">chapter</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">format</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VMETHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">wf</span><span class="plain-syntax">, </span><span class="constant-syntax">CHAPTER_TP_FOR_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. </b>The weaver has special typographical support for the stand-alone Inform
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. </b>The weaver has special typographical support for the stand-alone Inform
|
||||
document of Preform grammar, and this is the hook for it. Most formats
|
||||
should ignore it.
|
||||
</p>
|
||||
|
@ -193,7 +179,7 @@ should ignore it.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. Post-processing. </b>Post-processing is now largely done by commands in the pattern file, rather
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. Post-processing. </b>Post-processing is now largely done by commands in the pattern file, rather
|
||||
than here, but we retain method calls to enable formats to do some idiosyncratic
|
||||
post-processing.
|
||||
</p>
|
||||
|
@ -206,7 +192,7 @@ post-processing.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">VMETHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">format</span><span class="plain-syntax">, </span><span class="constant-syntax">POST_PROCESS_POS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">open_afterwards</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9"></a><b>§9. </b>Optionally, a fancy report can be printed out, to describe what has been
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. </b>Optionally, a fancy report can be printed out, to describe what has been
|
||||
done. Support for TeX console reporting is hard-wired here because it's
|
||||
handled by <a href="1-ptt.html#SP5" class="internal">Patterns::post_process</a> directly.
|
||||
</p>
|
||||
|
@ -216,11 +202,11 @@ handled by <a href="1-ptt.html#SP5" class="internal">Patterns::post_process</a>
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">VMETHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">POST_PROCESS_REPORT_POS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wf</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">)</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Formats::report_on_post_processing</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Formats::report_on_post_processing</span></span>:<br>The Swarm - <a href="1-ts.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-rtt.html#SP4" class="function-link"><span class="function-syntax">RunningTeX::report_on_post_processing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP5" class="function-link"><span class="function-syntax">TeXUtilities::report_on_post_processing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VMETHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">format</span><span class="plain-syntax">, </span><span class="constant-syntax">POST_PROCESS_REPORT_POS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10"></a><b>§10. </b>For the sake of index files, we may want to substitute in values for
|
||||
<p class="commentary firstcommentary"><a id="SP9"></a><b>§9. </b>For the sake of index files, we may want to substitute in values for
|
||||
placeholder text in the template file.
|
||||
</p>
|
||||
|
||||
|
@ -231,7 +217,7 @@ placeholder text in the template file.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">)</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Formats::substitute_post_processing_data</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Formats::substitute_post_processing_data</span></span>:<br>The Collater - <a href="3-tc.html#SP5_1_8_6">§5.1.8.6</a>, <a href="3-tc.html#SP5_1_8_7_1">§5.1.8.7.1</a>, <a href="3-tc.html#SP5_1_8_8_1">§5.1.8.8.1</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="5-rtt.html#SP5" class="function-link"><span class="function-syntax">RunningTeX::substitute_post_processing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">detail</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="5-tu.html#SP6" class="function-link"><span class="function-syntax">TeXUtilities::substitute_post_processing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">detail</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">IMETHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">rv</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">format</span><span class="plain-syntax">, </span><span class="constant-syntax">POST_PROCESS_SUBSTITUTE_POS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -930,7 +930,7 @@ that service uses to identify the video/audio in question.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">plugin_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">-></span><span class="element-syntax">mathematics_plugin</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">plugin_name</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tf.html#SP18" class="function-link"><span class="function-syntax">TeX::remove_math_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">content</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">content</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-hf.html#SP10" class="function-link"><span class="function-syntax">HTMLFormat::escape_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
|
|
@ -54,7 +54,6 @@ function togglePopup(material_id) {
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PlainText::create</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PlainText::create</span></span>:<br>Format Methods - <a href="5-fm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wf</span><span class="plain-syntax"> = </span><a href="5-fm.html#SP1" class="function-link"><span class="function-syntax">Formats::create_weave_format</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"plain"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".txt"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">wf</span><span class="plain-syntax">, </span><span class="constant-syntax">RENDER_FOR_MTID</span><span class="plain-syntax">, </span><a href="5-ptf.html#SP2" class="function-link"><span class="function-syntax">PlainText::render</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">wf</span><span class="plain-syntax">, </span><span class="constant-syntax">CHAPTER_TP_FOR_MTID</span><span class="plain-syntax">, </span><a href="5-ptf.html#SP3" class="function-link"><span class="function-syntax">PlainText::chapter_title_page</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. Methods. </b>For documentation, see "Weave Fornats".
|
||||
|
@ -77,13 +76,24 @@ function togglePopup(material_id) {
|
|||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PlainText::render_visit</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">PlainText::render_visit</span></span>:<br><a href="5-ptf.html#SP2_17">§2.17</a>, <a href="5-ptf.html#SP2_10_1">§2.10.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">PlainText_render_state</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prs</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">PlainText_render_state</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">state</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prs</span><span class="plain-syntax">-></span><span class="element-syntax">OUT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="identifier-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_document_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_head_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_body_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_tail_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_document_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_head_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_body_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_tail_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_chapter_title_page_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_chapter_footer_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_figure_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_audio_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_material_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_chapter_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_carousel_slide_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_toc_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_toc_line_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_grammar_index_node_type</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_inline_node_type</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_verbatim_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_11" class="named-paragraph-link"><span class="named-paragraph">Render verbatim</span><span class="named-paragraph-number">2.11</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_chapter_header_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Render chapter header</span><span class="named-paragraph-number">2.1</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_chapter_footer_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_section_header_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Render header</span><span class="named-paragraph-number">2.2</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_section_footer_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Render footer</span><span class="named-paragraph-number">2.3</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_section_purpose_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_4" class="named-paragraph-link"><span class="named-paragraph">Render purpose</span><span class="named-paragraph-number">2.4</span></span></a>
|
||||
|
@ -93,33 +103,24 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_linebreak_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_8" class="named-paragraph-link"><span class="named-paragraph">Render linebreak</span><span class="named-paragraph-number">2.8</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_paragraph_heading_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_9" class="named-paragraph-link"><span class="named-paragraph">Render paragraph heading</span><span class="named-paragraph-number">2.9</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_endnote_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_10" class="named-paragraph-link"><span class="named-paragraph">Render endnote</span><span class="named-paragraph-number">2.10</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_figure_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_audio_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_material_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_embed_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_13" class="named-paragraph-link"><span class="named-paragraph">Render embed</span><span class="named-paragraph-number">2.13</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_pmac_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_14" class="named-paragraph-link"><span class="named-paragraph">Render pmac</span><span class="named-paragraph-number">2.14</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_vskip_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_15" class="named-paragraph-link"><span class="named-paragraph">Render vskip</span><span class="named-paragraph-number">2.15</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_chapter_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_section_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_16" class="named-paragraph-link"><span class="named-paragraph">Render section</span><span class="named-paragraph-number">2.16</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_code_line_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_17" class="named-paragraph-link"><span class="named-paragraph">Render code line</span><span class="named-paragraph-number">2.17</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_function_usage_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_18" class="named-paragraph-link"><span class="named-paragraph">Render function usage</span><span class="named-paragraph-number">2.18</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_commentary_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_19" class="named-paragraph-link"><span class="named-paragraph">Render commentary</span><span class="named-paragraph-number">2.19</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_carousel_slide_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_toc_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_toc_line_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_chapter_title_page_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_20" class="named-paragraph-link"><span class="named-paragraph">Render weave_chapter_title_page_node</span><span class="named-paragraph-number">2.20</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_defn_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_21" class="named-paragraph-link"><span class="named-paragraph">Render defn</span><span class="named-paragraph-number">2.21</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_source_code_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_22" class="named-paragraph-link"><span class="named-paragraph">Render source code</span><span class="named-paragraph-number">2.22</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_url_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_23" class="named-paragraph-link"><span class="named-paragraph">Render URL</span><span class="named-paragraph-number">2.23</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_footnote_cue_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_24" class="named-paragraph-link"><span class="named-paragraph">Render footnote cue</span><span class="named-paragraph-number">2.24</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_begin_footnote_text_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_25" class="named-paragraph-link"><span class="named-paragraph">Render footnote text</span><span class="named-paragraph-number">2.25</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_display_line_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_26" class="named-paragraph-link"><span class="named-paragraph">Render display line</span><span class="named-paragraph-number">2.26</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_function_defn_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_27" class="named-paragraph-link"><span class="named-paragraph">Render function defn</span><span class="named-paragraph-number">2.27</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_item_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_28" class="named-paragraph-link"><span class="named-paragraph">Render item</span><span class="named-paragraph-number">2.28</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_grammar_index_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_inline_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_12" class="named-paragraph-link"><span class="named-paragraph">Render nothing</span><span class="named-paragraph-number">2.12</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_locale_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_29" class="named-paragraph-link"><span class="named-paragraph">Render locale</span><span class="named-paragraph-number">2.29</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_maths_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_30" class="named-paragraph-link"><span class="named-paragraph">Render maths</span><span class="named-paragraph-number">2.30</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_defn_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_20" class="named-paragraph-link"><span class="named-paragraph">Render defn</span><span class="named-paragraph-number">2.20</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_source_code_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_21" class="named-paragraph-link"><span class="named-paragraph">Render source code</span><span class="named-paragraph-number">2.21</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_url_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_22" class="named-paragraph-link"><span class="named-paragraph">Render URL</span><span class="named-paragraph-number">2.22</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_footnote_cue_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_23" class="named-paragraph-link"><span class="named-paragraph">Render footnote cue</span><span class="named-paragraph-number">2.23</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_begin_footnote_text_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_24" class="named-paragraph-link"><span class="named-paragraph">Render footnote text</span><span class="named-paragraph-number">2.24</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_display_line_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_25" class="named-paragraph-link"><span class="named-paragraph">Render display line</span><span class="named-paragraph-number">2.25</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_function_defn_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_26" class="named-paragraph-link"><span class="named-paragraph">Render function defn</span><span class="named-paragraph-number">2.26</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_item_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_27" class="named-paragraph-link"><span class="named-paragraph">Render item</span><span class="named-paragraph-number">2.27</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_locale_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_28" class="named-paragraph-link"><span class="named-paragraph">Render locale</span><span class="named-paragraph-number">2.28</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weave_maths_node_type</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-ptf.html#SP2_29" class="named-paragraph-link"><span class="named-paragraph">Render maths</span><span class="named-paragraph-number">2.29</span></span></a>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to render unknown node"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -224,7 +225,7 @@ function togglePopup(material_id) {
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a> (14 times).</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_13"></a><b>§2.13. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render embed</span><span class="named-paragraph-number">2.13</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
|
@ -287,15 +288,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">in_code</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" */ "</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_20"></a><b>§2.20. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render weave_chapter_title_page_node</span><span class="named-paragraph-number">2.20</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_chapter_title_page_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_weave_chapter_title_page_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">content</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"It was %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">allocation_id</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_21"></a><b>§2.21. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render defn</span><span class="named-paragraph-number">2.21</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_20"></a><b>§2.20. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render defn</span><span class="named-paragraph-number">2.20</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -303,7 +296,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S "</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">keyword</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_22"></a><b>§2.22. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render source code</span><span class="named-paragraph-number">2.22</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_21"></a><b>§2.21. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render source code</span><span class="named-paragraph-number">2.21</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -311,7 +304,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">matter</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_23"></a><b>§2.23. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render URL</span><span class="named-paragraph-number">2.23</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_22"></a><b>§2.22. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render URL</span><span class="named-paragraph-number">2.22</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -319,7 +312,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">url</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_24"></a><b>§2.24. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render footnote cue</span><span class="named-paragraph-number">2.24</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_23"></a><b>§2.23. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render footnote cue</span><span class="named-paragraph-number">2.23</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -327,14 +320,14 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[%S]"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">cue_text</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_25"></a><b>§2.25. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render footnote text</span><span class="named-paragraph-number">2.25</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_24"></a><b>§2.24. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render footnote text</span><span class="named-paragraph-number">2.24</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_26"></a><b>§2.26. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render display line</span><span class="named-paragraph-number">2.26</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_25"></a><b>§2.25. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render display line</span><span class="named-paragraph-number">2.25</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -342,7 +335,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_27"></a><b>§2.27. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render function defn</span><span class="named-paragraph-number">2.27</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_26"></a><b>§2.26. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render function defn</span><span class="named-paragraph-number">2.26</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -351,7 +344,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_28"></a><b>§2.28. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render item</span><span class="named-paragraph-number">2.28</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_27"></a><b>§2.27. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render item</span><span class="named-paragraph-number">2.27</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -360,7 +353,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(%S) "</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">label</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_29"></a><b>§2.29. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render locale</span><span class="named-paragraph-number">2.29</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_28"></a><b>§2.28. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render locale</span><span class="named-paragraph-number">2.28</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -369,7 +362,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">par2</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"-%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">par2</span><span class="plain-syntax">-></span><span class="element-syntax">paragraph_number</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_30"></a><b>§2.30. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render maths</span><span class="named-paragraph-number">2.30</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_29"></a><b>§2.29. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render maths</span><span class="named-paragraph-number">2.29</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -387,18 +380,6 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP13" class="function-link"><span class="function-syntax">Trees::traverse_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">, &</span><a href="5-ptf.html#SP2" class="function-link"><span class="function-syntax">PlainText::render_visit</span></a><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">prs</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">+1);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ptf.html#SP2_10">§2.10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PlainText::chapter_title_page</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">PlainText::chapter_title_page</span></span>:<br><a href="5-ptf.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">chapter</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S\n\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">rubric</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">section</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">sections</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S: %S\n %S\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">sect_range</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">sect_title</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">sect_purpose</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-fm.html">Back to 'Format Methods'</a></li><li><a href="5-tf.html">Continue with 'TeX Format'</a></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
|
|
@ -1,194 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Running Through TeX</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Octagram.png" width=72 height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="index.html"><span class="selectedlink">inweb</span></a></li>
|
||||
</ul><h2>Foundation Module</h2><ul>
|
||||
<li><a href="../foundation-module/index.html">foundation</a></li>
|
||||
<li><a href="../foundation-test/index.html">foundation-test</a></li>
|
||||
</ul><h2>Example Webs</h2><ul>
|
||||
<li><a href="../goldbach/index.html">goldbach</a></li>
|
||||
<li><a href="../twinprimes/twinprimes.html">twinprimes</a></li>
|
||||
<li><a href="../eastertide/index.html">eastertide</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inweb"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inform/docs/index.html">inform</a></li>
|
||||
<li><a href="../../../intest/docs/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Running Through TeX' generated by Inweb-->
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#5">Chapter 5: Formats</a></li><li><b>Running Through TeX</b></li></ul><p class="purpose">To post-process a weave by running it through TeX, or one of its variant typesetting programs.</p>
|
||||
|
||||
<ul class="toc"><li><a href="5-rtt.html#SP1">§1. Running TeX</a></li><li><a href="5-rtt.html#SP4">§4. Reporting</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Running TeX. </b>Although we are running <span class="extract"><span class="extract-syntax">pdftex</span></span>, a modern variant of TeX, rather than the
|
||||
original, they are very similar as command-line tools; the difference is
|
||||
that the output is a PDF file rather than a DVI file, Knuth's original stab
|
||||
at the same basic idea.
|
||||
</p>
|
||||
|
||||
<p class="commentary">In particular, we call it in <span class="extract"><span class="extract-syntax">-interaction=scrollmode</span></span> so that any errors
|
||||
whizz by rather than interrupting or halting the session. Because of that, we
|
||||
spool the output onto a console file which we can then read in and parse to
|
||||
find the number of errors actually generated. Prime among errors is the
|
||||
"overfull hbox error", a defect of TeX resulting from its inability to adjust
|
||||
letter spacing, so that it requires us to adjust the copy to fit the margins
|
||||
of the page properly. (In practice we get this here by having code lines which
|
||||
are too wide to display.)
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RunningTeX::post_process_weave</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">RunningTeX::post_process_weave</span></span>:<br>Patterns - <a href="1-ptt.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *</span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">tex_results</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rtt.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Initialise the TeX results</span><span class="named-paragraph-number">2.2</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">post_processing_results</span><span class="plain-syntax"> = </span><span class="identifier-syntax">res</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rtt.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Read back the console file and parse it for error messages</span><span class="named-paragraph-number">2.3</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>§2.1. </b>We're going to have to read in a console file of TeX output to work out
|
||||
what happened, and this structure will store what we find:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">overfull_hbox_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tex_error_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">page_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pdf_size</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PDF_filename</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure tex_results is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2"></a><b>§2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Initialise the TeX results</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">page_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">pdf_size</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">PDF_filename</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-fln.html#SP8" class="function-link"><span class="function-syntax">Filenames::set_extension</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".pdf"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-rtt.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3"></a><b>§2.3. </b>TeX helpfully reports the size and page count of what it produces, and
|
||||
we're not too proud to scrape that information out of the console file, besides
|
||||
the error messages (which begin with an exclamation mark in column 1).
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Read back the console file and parse it for error messages</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-tf.html#SP5" class="function-link"><span class="function-syntax">TextFiles::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CF</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"can't open console file"</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">, </span><a href="5-rtt.html#SP3" class="function-link"><span class="function-syntax">RunningTeX::scan_console_line</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">res</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-rtt.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RunningTeX::scan_console_line</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">RunningTeX::scan_console_line</span></span>:<br><a href="5-rtt.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">res_V</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *</span><span class="identifier-syntax">res</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">res_V</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">line</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"Output written %c*? %((%d+) page%c*?(%d+) bytes%)."</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">page_count</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP7" class="function-link"><span class="function-syntax">Str::atoi</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">pdf_size</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP7" class="function-link"><span class="function-syntax">Str::atoi</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1], </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"%c+verfull \\hbox%c+"</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_first_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">line</span><span class="plain-syntax">) == </span><span class="character-syntax">'!'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. Reporting. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RunningTeX::report_on_post_processing</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">RunningTeX::report_on_post_processing</span></span>:<br>Format Methods - <a href="5-fm.html#SP9">§9</a><br>TeX Format - <a href="5-tf.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *</span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">post_processing_results</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">": %dpp %dK"</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="identifier-syntax">page_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">pdf_size</span><span class="plain-syntax">/1024);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">", %d overfull hbox(es)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">", %d error(s)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. </b>And here are some details to do with the results of post-processing.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RunningTeX::substitute_post_processing_data</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">RunningTeX::substitute_post_processing_data</span></span>:<br>Format Methods - <a href="5-fm.html#SP10">§10</a><br>TeX Format - <a href="5-tf.html#SP17">§17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">detail</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *</span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">post_processing_results</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP22" class="function-link"><span class="function-syntax">Str::eq_wide_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"PDF Size"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"%dKB"</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">pdf_size</span><span class="plain-syntax">/1024);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP22" class="function-link"><span class="function-syntax">Str::eq_wide_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Extent"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"%dpp"</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">page_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP22" class="function-link"><span class="function-syntax">Str::eq_wide_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Leafname"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP17" class="function-link"><span class="function-syntax">Str::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><a href="../foundation-module/3-fln.html#SP7" class="function-link"><span class="function-syntax">Filenames::get_leafname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">PDF_filename</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP22" class="function-link"><span class="function-syntax">Str::eq_wide_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Errors"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP15" class="function-link"><span class="function-syntax">Str::clear</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">": "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"%d overfull line%s"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax">>1)?</span><span class="string-syntax">"s"</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">", "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"%d TeX error%s"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax">>1)?</span><span class="string-syntax">"s"</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-wp.html">Back to 'Weave Plugins'</a></li><li><i>(This section ends Chapter 5: Formats.)</i></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load diff
468
docs/inweb/5-tu.html
Normal file
468
docs/inweb/5-tu.html
Normal file
|
@ -0,0 +1,468 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>TeX Utilities</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Octagram.png" width=72 height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="index.html"><span class="selectedlink">inweb</span></a></li>
|
||||
</ul><h2>Foundation Module</h2><ul>
|
||||
<li><a href="../foundation-module/index.html">foundation</a></li>
|
||||
<li><a href="../foundation-test/index.html">foundation-test</a></li>
|
||||
</ul><h2>Example Webs</h2><ul>
|
||||
<li><a href="../goldbach/index.html">goldbach</a></li>
|
||||
<li><a href="../twinprimes/twinprimes.html">twinprimes</a></li>
|
||||
<li><a href="../eastertide/index.html">eastertide</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inweb"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inform/docs/index.html">inform</a></li>
|
||||
<li><a href="../../../intest/docs/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'TeX Utilities' generated by Inweb-->
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#5">Chapter 5: Formats</a></li><li><b>TeX Utilities</b></li></ul><p class="purpose">A few conveniences for using Inweb with TeX.</p>
|
||||
|
||||
<ul class="toc"><li><a href="5-tu.html#SP1">§1. Post-processing TeX console output</a></li><li><a href="5-tu.html#SP5">§5. Reporting</a></li><li><a href="5-tu.html#SP7">§7. Removing math mode</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Post-processing TeX console output. </b>Pattern commands post-processing TeX tend to run TeX-like tools in
|
||||
"scrollmode", so that any errors whizz by rather than interrupting or halting
|
||||
the session. Prime among errors is the "overfull hbox error", a defect of TeX
|
||||
resulting from its inability to adjust letter spacing, so that it requires us
|
||||
to adjust the copy to fit the margins of the page properly. (In practice we
|
||||
get this here by having code lines which are too wide to display.)
|
||||
</p>
|
||||
|
||||
<p class="commentary">Also, TeX helpfully reports the size and page count of what it produces, and
|
||||
we're not too proud to scrape that information out of the console file, besides
|
||||
the error messages (which begin with an exclamation mark in column 1).
|
||||
</p>
|
||||
|
||||
<p class="commentary">This structure will store what we find:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">overfull_hbox_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tex_error_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">page_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pdf_size</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PDF_filename</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure tex_results is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *</span><span class="function-syntax">TeXUtilities::new_results</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">TeXUtilities::new_results</span></span>:<br><a href="5-tu.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *</span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">tex_results</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">page_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">pdf_size</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">PDF_filename</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-fln.html#SP8" class="function-link"><span class="function-syntax">Filenames::set_extension</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CF</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".pdf"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. </b>So, then, here's the function called from <a href="1-ptt.html" class="internal">Patterns</a> in response to
|
||||
the special <span class="extract"><span class="extract-syntax">PROCESS</span></span> command:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TeXUtilities::post_process_weave</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">TeXUtilities::post_process_weave</span></span>:<br>Patterns - <a href="1-ptt.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">post_processing_results</span><span class="plain-syntax"> = </span><a href="5-tu.html#SP2" class="function-link"><span class="function-syntax">TeXUtilities::new_results</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">CF</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-tf.html#SP5" class="function-link"><span class="function-syntax">TextFiles::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CF</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"can't open console file"</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">, </span><a href="5-tu.html#SP4" class="function-link"><span class="function-syntax">TeXUtilities::scan_console_line</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">post_processing_results</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TeXUtilities::scan_console_line</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">TeXUtilities::scan_console_line</span></span>:<br><a href="5-tu.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">res_V</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *</span><span class="identifier-syntax">res</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">res_V</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">line</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"Output written %c*? %((%d+) page%c*?(%d+) bytes%)."</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">page_count</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP7" class="function-link"><span class="function-syntax">Str::atoi</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">pdf_size</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP7" class="function-link"><span class="function-syntax">Str::atoi</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1], </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"%c+verfull \\hbox%c+"</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_first_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">line</span><span class="plain-syntax">) == </span><span class="character-syntax">'!'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. Reporting. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TeXUtilities::report_on_post_processing</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">TeXUtilities::report_on_post_processing</span></span>:<br>Format Methods - <a href="5-fm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *</span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">post_processing_results</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">": %dpp %dK"</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="identifier-syntax">page_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">pdf_size</span><span class="plain-syntax">/1024);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">", %d overfull hbox(es)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">", %d error(s)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. </b>And here are some details to do with the results of post-processing.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">TeXUtilities::substitute_post_processing_data</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">TeXUtilities::substitute_post_processing_data</span></span>:<br>Format Methods - <a href="5-fm.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">detail</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tex_results</span><span class="plain-syntax"> *</span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">post_processing_results</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP22" class="function-link"><span class="function-syntax">Str::eq_wide_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"PDF Size"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"%dKB"</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">pdf_size</span><span class="plain-syntax">/1024);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP22" class="function-link"><span class="function-syntax">Str::eq_wide_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Extent"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"%dpp"</span><span class="plain-syntax">, </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">page_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP22" class="function-link"><span class="function-syntax">Str::eq_wide_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Leafname"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP17" class="function-link"><span class="function-syntax">Str::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><a href="../foundation-module/3-fln.html#SP7" class="function-link"><span class="function-syntax">Filenames::get_leafname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">PDF_filename</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP22" class="function-link"><span class="function-syntax">Str::eq_wide_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">detail</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Errors"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP15" class="function-link"><span class="function-syntax">Str::clear</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">": "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"%d overfull line%s"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax">>1)?</span><span class="string-syntax">"s"</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">overfull_hbox_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">", "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"%d TeX error%s"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax">-></span><span class="element-syntax">tex_error_count</span><span class="plain-syntax">>1)?</span><span class="string-syntax">"s"</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. Removing math mode. </b>"Math mode", in TeX jargon, is what happens when a mathematical formula
|
||||
is written inside dollar signs: in <span class="extract"><span class="extract-syntax">Answer is $x+y^2$</span></span>, the math mode
|
||||
content is <span class="extract"><span class="extract-syntax">x+y^2</span></span>. But since math mode doesn't (easily) exist in HTML,
|
||||
for example, we want to strip it out if the format is not TeX-related.
|
||||
To do this, the weaver calls the following.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TeXUtilities::remove_math_mode</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">TeXUtilities::remove_math_mode</span></span>:<br>HTML Formats - <a href="5-hf.html#SP5_34">§5.34</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">math_matter</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">math_matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">)-1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">math_matter</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">math_matter</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TeXUtilities::remove_math_mode_range</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></span>:<br><a href="5-tu.html#SP7_1">§7.1</a>, <a href="5-tu.html#SP7_2">§7.2</a>, <a href="5-tu.html#SP7_3">§7.3</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=</span><span class="identifier-syntax">from</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">to</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tu.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Remove the over construction</span><span class="named-paragraph-number">7.1</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=</span><span class="identifier-syntax">from</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">to</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tu.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Remove the rm and it constructions</span><span class="named-paragraph-number">7.2</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tu.html#SP7_3" class="named-paragraph-link"><span class="named-paragraph">Remove the sqrt constructions</span><span class="named-paragraph-number">7.3</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">math_mode</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=</span><span class="identifier-syntax">from</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">to</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'$'</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+1) == </span><span class="character-syntax">'$'</span><span class="plain-syntax">) </span><span class="identifier-syntax">i</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">math_mode</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">math_mode</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'~'</span><span class="plain-syntax">: </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">math_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"~"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\\'</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="5-tu.html#SP7_4" class="named-paragraph-link"><span class="named-paragraph">Do something to strip out a TeX macro</span><span class="named-paragraph-number">7.4</span></span></a><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">(</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">)); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7_1"></a><b>§7.1. </b>Here we remove <span class="extract"><span class="extract-syntax">{{top}\over{bottom}}</span></span>, converting it to <span class="extract"><span class="extract-syntax">((top) / (bottom))</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Remove the over construction</span><span class="named-paragraph-number">7.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'\\'</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+1) == </span><span class="character-syntax">'o'</span><span class="plain-syntax">) && (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+2) == </span><span class="character-syntax">'v'</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+3) == </span><span class="character-syntax">'e'</span><span class="plain-syntax">) && (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+4) == </span><span class="character-syntax">'r'</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+5) == </span><span class="character-syntax">'{'</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bl</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">-1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (; </span><span class="identifier-syntax">j</span><span class="plain-syntax"> >= </span><span class="identifier-syntax">from</span><span class="plain-syntax">; </span><span class="identifier-syntax">j</span><span class="plain-syntax">--) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'{'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bl</span><span class="plain-syntax">--;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bl</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'}'</span><span class="plain-syntax">) </span><span class="identifier-syntax">bl</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">-1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(("</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">+2, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-2);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">") / ("</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax">=</span><span class="identifier-syntax">i</span><span class="plain-syntax">+6; </span><span class="identifier-syntax">bl</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (; </span><span class="identifier-syntax">j</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">to</span><span class="plain-syntax">; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'}'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bl</span><span class="plain-syntax">--;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bl</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'{'</span><span class="plain-syntax">) </span><span class="identifier-syntax">bl</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+6, </span><span class="identifier-syntax">j</span><span class="plain-syntax">-1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"))"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">+2, </span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tu.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_2"></a><b>§7.2. </b>Here we remove <span class="extract"><span class="extract-syntax">{\rm text}</span></span>, converting it to <span class="extract"><span class="extract-syntax">text</span></span>, and similarly <span class="extract"><span class="extract-syntax">\it</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Remove the rm and it constructions</span><span class="named-paragraph-number">7.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'{'</span><span class="plain-syntax">) && (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+1) == </span><span class="character-syntax">'\\'</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+2) == </span><span class="character-syntax">'r'</span><span class="plain-syntax">) && (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+3) == </span><span class="character-syntax">'m'</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+2) == </span><span class="character-syntax">'i'</span><span class="plain-syntax">) && (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+3) == </span><span class="character-syntax">'t'</span><span class="plain-syntax">))) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+4) == </span><span class="character-syntax">' '</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-1);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax">=</span><span class="identifier-syntax">i</span><span class="plain-syntax">+5;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (; </span><span class="identifier-syntax">j</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">to</span><span class="plain-syntax">; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">) == </span><span class="character-syntax">'}'</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+5, </span><span class="identifier-syntax">j</span><span class="plain-syntax">-1);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tu.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_3"></a><b>§7.3. </b>Here we remove <span class="extract"><span class="extract-syntax">\sqrt{N}</span></span>, converting it to <span class="extract"><span class="extract-syntax">sqrt(N)</span></span>. As a special case,
|
||||
we also look out for <span class="extract"><span class="extract-syntax">{}^3\sqrt{N}</span></span> for cube root.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Remove the sqrt constructions</span><span class="named-paragraph-number">7.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'\\'</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+1) == </span><span class="character-syntax">'s'</span><span class="plain-syntax">) && (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+2) == </span><span class="character-syntax">'q'</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+3) == </span><span class="character-syntax">'r'</span><span class="plain-syntax">) && (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+4) == </span><span class="character-syntax">'t'</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+5) == </span><span class="character-syntax">'{'</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-4) == </span><span class="character-syntax">'{'</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-3) == </span><span class="character-syntax">'}'</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-2) == </span><span class="character-syntax">'^'</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-1) == </span><span class="character-syntax">'3'</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-5);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" curt("</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" sqrt("</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax">=</span><span class="identifier-syntax">i</span><span class="plain-syntax">+6, </span><span class="identifier-syntax">bl</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (; </span><span class="identifier-syntax">j</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">to</span><span class="plain-syntax">; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'}'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bl</span><span class="plain-syntax">--;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bl</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'{'</span><span class="plain-syntax">) </span><span class="identifier-syntax">bl</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+6, </span><span class="identifier-syntax">j</span><span class="plain-syntax">-1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP7" class="function-link"><span class="function-syntax">TeXUtilities::remove_math_mode_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tu.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_4"></a><b>§7.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Do something to strip out a TeX macro</span><span class="named-paragraph-number">7.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">i</span><span class="plain-syntax"> < </span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">)) && (</span><a href="../foundation-module/4-chr.html#SP1" class="function-link"><span class="function-syntax">Characters::isalpha</span></a><span class="plain-syntax">(</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">))))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">++));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"not"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="5-tu.html#SP7_4_2" class="named-paragraph-link"><span class="named-paragraph">Remove the not prefix</span><span class="named-paragraph-number">7.4.2</span></span></a>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tu.html#SP7_4_1" class="named-paragraph-link"><span class="named-paragraph">Remove a general macro</span><span class="named-paragraph-number">7.4.1</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">--;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tu.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_4_1"></a><b>§7.4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Remove a general macro</span><span class="named-paragraph-number">7.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"leq"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<="</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"geq"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">">="</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"sim"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"~"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"hbox"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"left"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"right"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Rightarrow"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"=>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Leftrightarrow"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<=>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"to"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"-->"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rightarrow"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"-->"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"longrightarrow"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"-->"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"leftarrow"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<--"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"longleftarrow"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<--"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"lbrace"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"{"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"mid"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"|"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rbrace"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"cdot"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"cdots"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"..."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"dots"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"..."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"times"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"*"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"quad"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"qquad"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"TeX"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"TeX"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"neq"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"!="</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"noteq"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"!="</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ell"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"l"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"log"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"log"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"exp"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"exp"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"sin"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"sin"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"cos"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"cos"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"tan"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"tan"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"top"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"T"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Alpha"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x0391</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Beta"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x0392</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Gamma"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x0393</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Delta"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x0394</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Epsilon"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x0395</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Zeta"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x0396</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Eta"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x0397</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Theta"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x0398</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Iota"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x0399</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Kappa"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x039A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Lambda"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x039B</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Mu"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x039C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Nu"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x039D</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Xi"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x039E</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Omicron"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x039F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Pi"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Rho"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Varsigma"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Sigma"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A3</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Tau"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A4</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Upsilon"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A5</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Phi"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A6</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Chi"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A7</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Psi"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A8</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Omega"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A9</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"alpha"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03B1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"beta"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03B2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"gamma"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03B3</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"delta"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03B4</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"epsilon"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03B5</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"zeta"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03B6</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"eta"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03B7</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"theta"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03B8</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"iota"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03B9</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"kappa"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03BA</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"lambda"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03BB</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"mu"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03BC</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"nu"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03BD</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"xi"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03BE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"omicron"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03BF</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"pi"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03C0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rho"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03C1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"varsigma"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03C2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"sigma"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03C3</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"tau"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03C4</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"upsilon"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03C5</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"phi"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03C6</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"chi"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03C7</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"psi"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03C8</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"omega"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03C9</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"exists"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x2203</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"in"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x2208</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"forall"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x2200</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"cap"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x2229</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"emptyset"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x2205</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"subseteq"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x2286</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"land"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x2227</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"lor"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x2228</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"lnot"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x00AC</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"sum"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A3</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"prod"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x03A0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">suspect</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="reserved-syntax">macro</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> >= </span><span class="character-syntax">'A'</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="character-syntax">'Z'</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> >= </span><span class="character-syntax">'a'</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> <= </span><span class="character-syntax">'z'</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">suspect</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"n"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">suspect</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"t"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">suspect</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">suspect</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"[Passing through unknown TeX macro \\%S:\n %S\n"</span><span class="plain-syntax">, </span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\\%S"</span><span class="plain-syntax">, </span><span class="reserved-syntax">macro</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tu.html#SP7_4">§7.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_4_2"></a><b>§7.4.2. </b>For Inform's purposes, we need to deal with just <span class="extract"><span class="extract-syntax">\not\exists</span></span> and <span class="extract"><span class="extract-syntax">\not\forall</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Remove the not prefix</span><span class="named-paragraph-number">7.4.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'\\'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP15" class="function-link"><span class="function-syntax">Str::clear</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">i</span><span class="plain-syntax"> < </span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">)) && (</span><a href="../foundation-module/4-chr.html#SP1" class="function-link"><span class="function-syntax">Characters::isalpha</span></a><span class="plain-syntax">(</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">))))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">++));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"exists"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x2204</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="reserved-syntax">macro</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"forall"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x00AC</span><span class="plain-syntax">); </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="constant-syntax">0x2200</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Don't know how to apply '\\not' to '\\%S'\n"</span><span class="plain-syntax">, </span><span class="reserved-syntax">macro</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Don't know how to apply '\\not' here\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tu.html#SP7_4">§7.4</a>.</li></ul>
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-wp.html">Back to 'Weave Plugins'</a></li><li><i>(This section ends Chapter 5: Formats.)</i></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -273,7 +273,7 @@ inclusion of that, and also copy the file into the weave destination.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-df.html">Back to 'Debugging Format'</a></li><li><a href="5-rtt.html">Continue with 'Running Through TeX'</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-df.html">Back to 'Debugging Format'</a></li><li><a href="5-tu.html">Continue with 'TeX Utilities'</a></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -238,8 +238,8 @@
|
|||
<span class="purpose">Mainly for HTML, to add the necessary JavaScript for unusual requirements such as equations or footnotes.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="5-rtt.html"><spon class="sectiontitle">Running Through TeX</span></a> -
|
||||
<span class="purpose">To post-process a weave by running it through TeX, or one of its variant typesetting programs.</span></p>
|
||||
<p><a href="5-tu.html"><spon class="sectiontitle">TeX Utilities</span></a> -
|
||||
<span class="purpose">A few conveniences for using Inweb with TeX.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
1
inweb.mk
1
inweb.mk
|
@ -115,6 +115,7 @@ pages:
|
|||
$(INWEB) -colony $(COLONY) -member goldbach -weave
|
||||
$(INWEB) -colony $(COLONY) inweb/Examples/goldbach all -weave-as Plain -weave-to inweb/docs/goldbach/goldbach.txt
|
||||
$(INWEB) -colony $(COLONY) inweb/Examples/goldbach all -weave-as TestingInweb -weave-to inweb/docs/goldbach/goldbach-test.txt
|
||||
$(INWEB) -colony $(COLONY) inweb/Examples/goldbach all -weave-as PDFTeX -weave-to inweb/docs/goldbach/goldbach.pdf
|
||||
$(INWEB) -colony $(COLONY) inweb/Examples/goldbach all -weave-as TeX -weave-to inweb/docs/goldbach/goldbach.tex
|
||||
$(INWEB) -colony $(COLONY) -member twinprimes -weave
|
||||
$(INWEB) -colony $(COLONY) -member eastertide -weave
|
||||
|
|
|
@ -144,6 +144,7 @@ pages:
|
|||
$(INWEB) -colony $(COLONY) -member goldbach -weave
|
||||
$(INWEB) -colony $(COLONY) inweb/Examples/goldbach all -weave-as Plain -weave-to inweb/docs/goldbach/goldbach.txt
|
||||
$(INWEB) -colony $(COLONY) inweb/Examples/goldbach all -weave-as TestingInweb -weave-to inweb/docs/goldbach/goldbach-test.txt
|
||||
$(INWEB) -colony $(COLONY) inweb/Examples/goldbach all -weave-as PDFTeX -weave-to inweb/docs/goldbach/goldbach.pdf
|
||||
$(INWEB) -colony $(COLONY) inweb/Examples/goldbach all -weave-as TeX -weave-to inweb/docs/goldbach/goldbach.tex
|
||||
$(INWEB) -colony $(COLONY) -member twinprimes -weave
|
||||
$(INWEB) -colony $(COLONY) -member eastertide -weave
|
||||
|
|
Loading…
Reference in a new issue