summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/mft.ch
diff options
context:
space:
mode:
authorDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
committerDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
commitc6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch)
tree1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/texk/web2c/mft.ch
parent07ee7222e389b0777456b427a55c22d0e6ffd267 (diff)
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/mft.ch')
-rw-r--r--Build/source/texk/web2c/mft.ch1214
1 files changed, 0 insertions, 1214 deletions
diff --git a/Build/source/texk/web2c/mft.ch b/Build/source/texk/web2c/mft.ch
deleted file mode 100644
index 1ad6c621d41..00000000000
--- a/Build/source/texk/web2c/mft.ch
+++ /dev/null
@@ -1,1214 +0,0 @@
-% mft.ch for C compilation with web2c.
-%
-% From Pierre Mackay's version for pc, which was in turn based on Howard
-% Trickey's and Pavel Curtis's change file for weave.
-% Support for MP included from a changefile by Wlodek Bzyl.
-% This file is in the public domain.
-
-@x [0] l.16 - WEAVE: use logo font to get the S
-\font\logo=manfnt % font used for the METAFONT logo
-@y
-\font\logo=logo10 % font used for the METAFONT logo
-\def\MP{{\logo META}\-{\logo POST}}
-@z
-
-@x [0] WEAVE: print changes only.
-\pageno=\contentspagenumber \advance\pageno by 1
-@y
-\pageno=\contentspagenumber \advance\pageno by 1
-\let\maybe=\iffalse
-\def\title{MFT changes for C and METAPOST}
-@z
-
-@x [1]
-This program converts a \MF\ source file to a \TeX\ file. It was written
-@y
-This program converts a \MF\ or \MP\ source file to a \TeX\ file.
-It was written
-@z
-@x [1]
-@^Knuth, Donald Ervin@>
-been developed in January, 1980.
-@y
-@^Knuth, Donald Ervin@>
-been developed in January, 1980.
-@^Bzyl, Wlodek@>
-Changes for \MP\ by W.~Bzyl in July, 2001.
-@z
-
-@x [2] Define my_name
-@d banner=='This is MFT, Version 2.1'
-@y
-@d my_name=='mft'
-@d banner=='This is MFT, Version 2.1'
-@z
-
-% [3] No need for the final label in C.
-% AIX defines `class' in <math.h>, so let's take this opportunity to
-% define that away.
-@x
-calls the `|jump_out|' procedure, which goes to the label |end_of_MFT|.
-
-@d end_of_MFT = 9999 {go here to wrap it up}
-@y
-calls the `|jump_out|' procedure.
-
-@d class == class_var
-@z
-
-@x [3] No global labels.
-label end_of_MFT; {go here to finish}
-@y
-@z
-
-@x [3]
-procedure initialize;
- var @<Local variables for initialization@>@/
- begin @<Set initial values@>@/
-@y
-@<Define |parse_arguments|@>
-procedure initialize;
- var @<Local variables for initialization@>@/
-begin
- kpse_set_program_name (argv[0], my_name);
- parse_arguments;
- @<Set initial values@>;
-@z
-
-@x [8] Increase constants.
-@!max_bytes=10000; {the number of bytes in tokens; must be less than 65536}
-@!max_names=1000; {number of tokens}
-@y
-@!max_bytes=60000; {the number of bytes in tokens; must be less than 65536}
-@!max_names=6000; {number of tokens}
-@z
-@x
-@!buf_size=100; {maximum length of input line}
-@!line_length=80; {lines of \TeX\ output have at most this many characters,
-@y
-@!buf_size=3000; {maximum length of input line}
-@!line_length=79; {lines of \TeX\ output have at most this many characters,
-@z
-
-% [13] The text_char type is used as an array index into xord. The
-% default type `char' produces signed integers, which are bad array
-% indices in C.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@d text_char == char {the data type of characters in text files}
-@y
-@d text_char == ASCII_code {the data type of characters in text files}
-@z
-
-@x [17] Allow any input character.
-for i:=0 to @'37 do xchr[i]:=' ';
-for i:=@'177 to @'377 do xchr[i]:=' ';
-@y
-for i:=1 to @'37 do xchr[i]:=chr(i);
-for i:=@'177 to @'377 do xchr[i]:=chr(i);
-@z
-
-@x [20] Terminal I/O.
-@d print(#)==write(term_out,#) {`|print|' means write on the terminal}
-@y
-@d term_out==stdout
-@d print(#)==write(term_out,#) {`|print|' means write on the terminal}
-@z
-
-% [20] Remove term_out.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@<Globals...@>=
-@!term_out:text_file; {the terminal as an output file}
-@y
-@z
-
-@x [21] Don't initialize the terminal.
-@ Different systems have different ways of specifying that the output on a
-certain file will appear on the user's terminal. Here is one way to do this
-on the \PASCAL\ system that was used in \.{WEAVE}'s initial development:
-@^system dependencies@>
-
-@<Set init...@>=
-rewrite(term_out,'TTY:'); {send |term_out| output to the terminal}
-@y
-@ Different systems have different ways of specifying that the output on a
-certain file will appear on the user's terminal.
-@^system dependencies@>
-
-@<Set init...@>=
-{nothing need be done}
-@z
-
-@x [22] `break' is `fflush'.
-@d update_terminal == break(term_out) {empty the terminal output buffer}
-@y
-@d update_terminal == fflush(term_out) {empty the terminal output buffer}
-@z
-
-@x [24] Open input files.
-@ The following code opens the input files. Since these files were listed
-in the program header, we assume that the \PASCAL\ runtime system has
-already checked that suitable file names have been given; therefore no
-additional error checking needs to be done.
-@^system dependencies@>
-
-@p procedure open_input; {prepare to read the inputs}
-begin reset(mf_file); reset(change_file); reset(style_file);
-end;
-@y
-@ The following code opens the input files.
-@^system dependencies@>
-
-@p procedure open_input; {prepare to read inputs}
-begin
- if metapost then
- mf_file := kpse_open_file (cmdline (optind), kpse_mp_format)
- else
- mf_file := kpse_open_file (cmdline (optind), kpse_mf_format);
- if change_name then begin
- if metapost then
- change_file := kpse_open_file (change_name, kpse_mp_format)
- else
- change_file := kpse_open_file (change_name, kpse_mf_format);
- end;
- style_file := kpse_open_file (style_name[0], kpse_mft_format);
- i_style_name := 1;
-end;
-@z
-
-@x [26] Opening the .tex output file.
-rewrite(tex_file);
-@y
-rewrite (tex_file, tex_name);
-@z
-
-@x [28] Fix f^.
- begin buffer[limit]:=xord[f^]; get(f);
- incr(limit);
- if buffer[limit-1]<>" " then final_limit:=limit;
- if limit=buf_size then
- begin while not eoln(f) do get(f);
-@y
- begin buffer[limit]:=xord[getc(f)];
- incr(limit);
- if buffer[limit-1]<>" " then final_limit:=limit;
- if limit=buf_size then
- begin while not eoln(f) do vgetc(f);
-@z
-
-@x [31] Fix jump_out.
-@ The |jump_out| procedure just cuts across all active procedure levels
-and jumps out of the program. This is the only non-local \&{goto} statement
-in \.{MFT}. It is used when no recovery from a particular error has
-been provided.
-
-Some \PASCAL\ compilers do not implement non-local |goto| statements.
-@^system dependencies@>
-In such cases the code that appears at label |end_of_MFT| should be
-copied into the |jump_out| procedure, followed by a call to a system procedure
-that terminates the program.
-
-@d fatal_error(#)==begin new_line; print(#); error; mark_fatal; jump_out;
- end
-
-@<Error handling...@>=
-procedure jump_out;
-begin goto end_of_MFT;
-end;
-@y
-@ The |jump_out| procedure cleans up, prints appropriate messages,
-and exits back to the operating system.
-
-@d fatal_error(#)==begin new_line; print(#); error; mark_fatal; jump_out;
- end
-
-@<Error handling...@>=
-procedure jump_out;
-begin
-{here files should be closed if the operating system requires it}
- @<Print the job |history|@>;
- new_line;
- if (history <> spotless) and (history <> harmless_message) then
- uexit(1)
- else
- uexit(0);
-end;
-@z
-
-@x [47] -- allow for multiple style files
-@ @<Read from |style_file|...@>=
-begin incr(line);
-if not input_ln(style_file) then
- begin styling:=false; line:=0;
- end;
-end
-@y
-@ @<Read from |style_file|...@>=
-begin incr(line);
-if not input_ln(style_file) then begin
- if i_style_name <> n_style_name then begin
- xfclose(style_file,style_name[i_style_name-1]);
- style_file := kpse_open_file (style_name[i_style_name], kpse_mft_format);
- i_style_name := i_style_name + 1;
- end
- else begin
- styling:=false;
- end;
- line:=0;
- end;
-end
-@z
-
-% MFT incorrectly handles TeX code contained in groups:
-%
-% btex <TeX material> etex
-% verbatimtex <TeX material> etex
-%
-% Ulrik Vieth (using ideas of Andreas Scherer) developed a Unix
-% shell script which tries to correct errors made by MFT when
-% prettyprinting TeX material.
-% His script converts TeX material to a `TeXnical MFT comment',
-% which means that it is extracted and prettyprinted as string.
-% Unfortunately, his script assumes that these groups may not
-% extend across line breaks and there may be only one such
-% group per line, which is sometimes hard to obey and
-% makes prettyprinted code harder to read.
-% Moreover, any synonym for btex/verbatimtex/etex would not be
-% recognized. So, if we introduce a change in MFT's formatting
-% rules with
-% %%% btex my_btex
-% i.e. we instruct MFT to format token `my_btex' according the
-% current convention for `btex' token,
-% then this new convention would not be obeyed. It is so,
-% because the script has hardcoded btex/verbatimtex/etex names.
-
-@x [63]
-@d input_command=31 {internal code for tokens like `\.{input}'}
-@d special_tag=32 {internal code for tags that take at most one subscript}
-@d tag=33 {internal code for nonprimitive tokens}
-@y
-@d input_command=31 {internal code for tokens like `\.{input}'}
-@d btex_code=32 {begin \TeX\ material (\.{btex})}
-@d verbatim_code=33 {begin \TeX\ material (\.{verbatimtex})}
-@d etex_marker=34 {end \TeX\ material (\.{etex})}
-@d special_tag=35 {internal code for tags that take at most one subscript}
-@d tag=36 {internal code for nonprimitive tokens}
-@z
-
-% Now follows the simplest change -- although the bigest one.
-% The primitives of \MF\ and \MP\ are reshuffled into
-% three categories:
-% -- primitives common for \MF\ and \MP
-% -- primitives specific for \MF
-% -- primitives specific for \MP
-
-@x [65]
-@ The intended use of the macros above might not be immediately obvious,
-but the riddle is answered by the following:
-
-@<Store all the primitives@>=
-id_loc:=18;@/
-pr2(".")(".")(path_join);@/
-pr1("[")(as_is);@/
-pr1("]")(as_is);@/
-pr1("}")(as_is);@/
-pr1("{")(as_is);@/
-pr1(":")(colon);@/
-pr2(":")(":")(colon);@/
-pr3("|")("|")(":")(colon);@/
-pr2(":")("=")(as_is);@/
-pr1(",")(as_is);@/
-pr1(";")(semicolon);@/
-pr1("\")(backslash);@/
-pr2("\")("\")(double_back);@/
-pr5("a")("d")("d")("t")("o")(command);@/
-pr2("a")("t")(bbinary);@/
-pr7("a")("t")("l")("e")("a")("s")("t")(op);@/
-pr10("b")("e")("g")("i")("n")("g")("r")("o")("u")("p")(command);
-pr8("c")("o")("n")("t")("r")("o")("l")("s")(op);@/
-pr4("c")("u")("l")("l")(command);@/
-pr4("c")("u")("r")("l")(op);@/
-pr10("d")("e")("l")("i")("m")("i")("t")("e")("r")("s")(command);@/
-pr7("d")("i")("s")("p")("l")("a")("y")(command);@/
-pr8("e")("n")("d")("g")("r")("o")("u")("p")(endit);@/
-pr8("e")("v")("e")("r")("y")("j")("o")("b")(command);@/
-pr6("e")("x")("i")("t")("i")("f")(command);@/
-pr11("e")("x")("p")("a")("n")("d")("a")("f")("t")("e")("r")(command);@/
-pr4("f")("r")("o")("m")(bbinary);@/
-pr8("i")("n")("w")("i")("n")("d")("o")("w")(bbinary);@/
-pr7("i")("n")("t")("e")("r")("i")("m")(command);@/
-pr3("l")("e")("t")(command);@/
-pr11("n")("e")("w")("i")("n")("t")("e")("r")("n")("a")("l")(command);@/
-pr2("o")("f")(command);@/
-pr10("o")("p")("e")("n")("w")("i")("n")("d")("o")("w")(command);@/
-pr10("r")("a")("n")("d")("o")("m")("s")("e")("e")("d")(command);@/
-pr4("s")("a")("v")("e")(command);@/
-pr10("s")("c")("a")("n")("t")("o")("k")("e")("n")("s")(command);@/
-pr7("s")("h")("i")("p")("o")("u")("t")(command);@/
-pr4("s")("t")("e")("p")(bbinary);@/
-pr3("s")("t")("r")(command);@/
-pr7("t")("e")("n")("s")("i")("o")("n")(op);@/
-pr2("t")("o")(bbinary);@/
-pr5("u")("n")("t")("i")("l")(bbinary);@/
-pr3("d")("e")("f")(command);@/
-pr6("v")("a")("r")("d")("e")("f")(command);@/
-
-@ (There are so many primitives, it's necessary to break this long
-initialization code up into pieces so as not to overflow \.{WEAVE}'s capacity.)
-
-@<Store all the primitives@>=
-pr10("p")("r")("i")("m")("a")("r")("y")("d")("e")("f")(command);@/
-pr12("s")("e")("c")("o")("n")("d")("a")("r")("y")("d")("e")("f")(command);@/
-pr11("t")("e")("r")("t")("i")("a")("r")("y")("d")("e")("f")(command);@/
-pr6("e")("n")("d")("d")("e")("f")(endit);@/
-pr3("f")("o")("r")(command);@/
-pr11("f")("o")("r")("s")("u")("f")("f")("i")("x")("e")("s")(command);@/
-pr7("f")("o")("r")("e")("v")("e")("r")(command);@/
-pr6("e")("n")("d")("f")("o")("r")(endit);@/
-pr5("q")("u")("o")("t")("e")(command);@/
-pr4("e")("x")("p")("r")(command);@/
-pr6("s")("u")("f")("f")("i")("x")(command);@/
-pr4("t")("e")("x")("t")(command);@/
-pr7("p")("r")("i")("m")("a")("r")("y")(command);@/
-pr9("s")("e")("c")("o")("n")("d")("a")("r")("y")(command);@/
-pr8("t")("e")("r")("t")("i")("a")("r")("y")(command);@/
-pr5("i")("n")("p")("u")("t")(input_command);@/
-pr8("e")("n")("d")("i")("n")("p")("u")("t")(bold);@/
-pr2("i")("f")(command);@/
-pr2("f")("i")(endit);@/
-pr4("e")("l")("s")("e")(command);@/
-pr6("e")("l")("s")("e")("i")("f")(command);@/
-pr4("t")("r")("u")("e")(bold);@/
-pr5("f")("a")("l")("s")("e")(bold);@/
-pr11("n")("u")("l")("l")("p")("i")("c")("t")("u")("r")("e")(bold);@/
-pr7("n")("u")("l")("l")("p")("e")("n")(bold);@/
-pr7("j")("o")("b")("n")("a")("m")("e")(bold);@/
-pr10("r")("e")("a")("d")("s")("t")("r")("i")("n")("g")(bold);@/
-pr9("p")("e")("n")("c")("i")("r")("c")("l")("e")(bold);@/
-pr4("g")("o")("o")("d")(special_tag);@/
-pr2("=")(":")(as_is);@/
-pr3("=")(":")("|")(as_is);@/
-pr4("=")(":")("|")(">")(as_is);@/
-pr3("|")("=")(":")(as_is);@/
-pr4("|")("=")(":")(">")(as_is);@/
-pr4("|")("=")(":")("|")(as_is);@/
-pr5("|")("=")(":")("|")(">")(as_is);@/
-pr6("|")("=")(":")("|")(">")(">")(as_is);@/
-pr4("k")("e")("r")("n")(binary);
-pr6("s")("k")("i")("p")("t")("o")(command);@/
-
-@ (Does anybody out there remember the commercials that went \.{LS-MFT}?)
-
-@<Store all the prim...@>=
-pr13("n")("o")("r")("m")("a")("l")("d")("e")("v")("i")("a")("t")("e")(op);@/
-pr3("o")("d")("d")(op);@/
-pr5("k")("n")("o")("w")("n")(op);@/
-pr7("u")("n")("k")("n")("o")("w")("n")(op);@/
-pr3("n")("o")("t")(op);@/
-pr7("d")("e")("c")("i")("m")("a")("l")(op);@/
-pr7("r")("e")("v")("e")("r")("s")("e")(op);@/
-pr8("m")("a")("k")("e")("p")("a")("t")("h")(op);@/
-pr7("m")("a")("k")("e")("p")("e")("n")(op);@/
-pr11("t")("o")("t")("a")("l")("w")("e")("i")("g")("h")("t")(op);@/
-pr3("o")("c")("t")(op);@/
-pr3("h")("e")("x")(op);@/
-pr5("A")("S")("C")("I")("I")(op);@/
-pr4("c")("h")("a")("r")(op);@/
-pr6("l")("e")("n")("g")("t")("h")(op);@/
-pr13("t")("u")("r")("n")("i")("n")("g")("n")("u")("m")("b")("e")("r")(op);@/
-pr5("x")("p")("a")("r")("t")(op);@/
-pr5("y")("p")("a")("r")("t")(op);@/
-pr6("x")("x")("p")("a")("r")("t")(op);@/
-pr6("x")("y")("p")("a")("r")("t")(op);@/
-pr6("y")("x")("p")("a")("r")("t")(op);@/
-pr6("y")("y")("p")("a")("r")("t")(op);@/
-pr4("s")("q")("r")("t")(op);@/
-pr4("m")("e")("x")("p")(op);@/
-pr4("m")("l")("o")("g")(op);@/
-pr4("s")("i")("n")("d")(op);@/
-pr4("c")("o")("s")("d")(op);@/
-pr5("f")("l")("o")("o")("r")(op);@/
-pr14("u")("n")("i")("f")("o")("r")("m")("d")("e")("v")("i")("a")("t")("e")(op);
- @/
-pr10("c")("h")("a")("r")("e")("x")("i")("s")("t")("s")(op);@/
-pr5("a")("n")("g")("l")("e")(op);@/
-pr5("c")("y")("c")("l")("e")(op);@/
-
-@ (If you think this \.{WEB} code is ugly, you should see the Pascal code
-it produces.)
-
-@<Store all the primitives@>=
-pr13("t")("r")("a")("c")("i")("n")("g")
- ("t")("i")("t")("l")("e")("s")(internal);@/
-pr16("t")("r")("a")("c")("i")("n")("g")
- ("e")("q")("u")("a")("t")("i")("o")("n")("s")(internal);@/
-pr15("t")("r")("a")("c")("i")("n")("g")
- ("c")("a")("p")("s")("u")("l")("e")("s")(internal);@/
-pr14("t")("r")("a")("c")("i")("n")("g")
- ("c")("h")("o")("i")("c")("e")("s")(internal);@/
-pr12("t")("r")("a")("c")("i")("n")("g")
- ("s")("p")("e")("c")("s")(internal);@/
-pr11("t")("r")("a")("c")("i")("n")("g")
- ("p")("e")("n")("s")(internal);@/
-pr15("t")("r")("a")("c")("i")("n")("g")
- ("c")("o")("m")("m")("a")("n")("d")("s")(internal);@/
-pr13("t")("r")("a")("c")("i")("n")("g")
- ("m")("a")("c")("r")("o")("s")(internal);@/
-pr12("t")("r")("a")("c")("i")("n")("g")
- ("e")("d")("g")("e")("s")(internal);@/
-pr13("t")("r")("a")("c")("i")("n")("g")
- ("o")("u")("t")("p")("u")("t")(internal);@/
-pr12("t")("r")("a")("c")("i")("n")("g")
- ("s")("t")("a")("t")("s")(internal);@/
-pr13("t")("r")("a")("c")("i")("n")("g")
- ("o")("n")("l")("i")("n")("e")(internal);@/
-pr15("t")("r")("a")("c")("i")("n")("g")
- ("r")("e")("s")("t")("o")("r")("e")("s")(internal);@/
-
-@ @<Store all the primitives@>=
-pr4("y")("e")("a")("r")(internal);@/
-pr5("m")("o")("n")("t")("h")(internal);@/
-pr3("d")("a")("y")(internal);@/
-pr4("t")("i")("m")("e")(internal);@/
-pr8("c")("h")("a")("r")("c")("o")("d")("e")(internal);@/
-pr7("c")("h")("a")("r")("e")("x")("t")(internal);@/
-pr6("c")("h")("a")("r")("w")("d")(internal);@/
-pr6("c")("h")("a")("r")("h")("t")(internal);@/
-pr6("c")("h")("a")("r")("d")("p")(internal);@/
-pr6("c")("h")("a")("r")("i")("c")(internal);@/
-pr6("c")("h")("a")("r")("d")("x")(internal);@/
-pr6("c")("h")("a")("r")("d")("y")(internal);@/
-pr10("d")("e")("s")("i")("g")("n")("s")("i")("z")("e")(internal);@/
-pr4("h")("p")("p")("p")(internal);@/
-pr4("v")("p")("p")("p")(internal);@/
-pr7("x")("o")("f")("f")("s")("e")("t")(internal);@/
-pr7("y")("o")("f")("f")("s")("e")("t")(internal);@/
-pr7("p")("a")("u")("s")("i")("n")("g")(internal);@/
-pr12("s")("h")("o")("w")
- ("s")("t")("o")("p")("p")("i")("n")("g")(internal);@/
-pr10("f")("o")("n")("t")("m")("a")("k")("i")("n")("g")(internal);@/
-pr8("p")("r")("o")("o")("f")("i")("n")("g")(internal);@/
-pr9("s")("m")("o")("o")("t")("h")("i")("n")("g")(internal);@/
-pr12("a")("u")("t")("o")("r")("o")("u")("n")("d")("i")("n")("g")(internal);@/
-pr11("g")("r")("a")("n")("u")("l")("a")("r")("i")("t")("y")(internal);@/
-pr6("f")("i")("l")("l")("i")("n")(internal);@/
-pr12("t")("u")("r")("n")("i")("n")("g")("c")("h")("e")("c")("k")(internal);@/
-pr12("w")("a")("r")("n")("i")("n")("g")("c")("h")("e")("c")("k")(internal);@/
-pr12("b")("o")("u")("n")("d")("a")("r")("y")("c")("h")("a")("r")(internal);@/
-
-@ Still more.
-
-@<Store all the prim...@>=
-pr1("+")(abinary);@/
-pr1("-")(abinary);@/
-pr1("*")(abinary);@/
-pr1("/")(as_is);@/
-pr2("+")("+")(binary);@/
-pr3("+")("-")("+")(pyth_sub);@/
-pr3("a")("n")("d")(binary);@/
-pr2("o")("r")(binary);@/
-pr1("<")(as_is);@/
-pr2("<")("=")(less_or_equal);@/
-pr1(">")(as_is);@/
-pr2(">")("=")(greater_or_equal);@/
-pr1("=")(as_is);@/
-pr2("<")(">")(not_equal);@/
-pr9("s")("u")("b")("s")("t")("r")("i")("n")("g")(command);@/
-pr7("s")("u")("b")("p")("a")("t")("h")(command);@/
-pr13("d")("i")("r")("e")("c")("t")("i")("o")("n")@|
- ("t")("i")("m")("e")(command);@/
-pr5("p")("o")("i")("n")("t")(command);@/
-pr10("p")("r")("e")("c")("o")("n")("t")("r")("o")("l")(command);@/
-pr11("p")("o")("s")("t")("c")("o")("n")("t")("r")("o")("l")(command);@/
-pr9("p")("e")("n")("o")("f")("f")("s")("e")("t")(command);@/
-pr1("&")(ampersand);@/
-pr7("r")("o")("t")("a")("t")("e")("d")(binary);@/
-pr7("s")("l")("a")("n")("t")("e")("d")(binary);@/
-pr6("s")("c")("a")("l")("e")("d")(binary);@/
-pr7("s")("h")("i")("f")("t")("e")("d")(binary);@/
-pr11("t")("r")("a")("n")("s")("f")("o")("r")("m")("e")("d")(binary);@/
-pr7("x")("s")("c")("a")("l")("e")("d")(binary);@/
-pr7("y")("s")("c")("a")("l")("e")("d")(binary);@/
-pr7("z")("s")("c")("a")("l")("e")("d")(binary);@/
-pr17("i")("n")("t")("e")("r")("s")("e")("c")("t")("i")("o")("n")@|
- ("t")("i")("m")("e")("s")(binary);@/
-pr7("n")("u")("m")("e")("r")("i")("c")(type_name);@/
-pr6("s")("t")("r")("i")("n")("g")(type_name);@/
-pr7("b")("o")("o")("l")("e")("a")("n")(type_name);@/
-pr4("p")("a")("t")("h")(type_name);@/
-pr3("p")("e")("n")(type_name);@/
-pr7("p")("i")("c")("t")("u")("r")("e")(type_name);@/
-pr9("t")("r")("a")("n")("s")("f")("o")("r")("m")(type_name);@/
-pr4("p")("a")("i")("r")(type_name);@/
-
-@ At last we are done with the tedious initialization of primitives.
-
-@<Store all the prim...@>=
-pr3("e")("n")("d")(endit);@/
-pr4("d")("u")("m")("p")(endit);@/
-pr9("b")("a")("t")("c")("h")("m")("o")("d")("e")(bold);
-pr11("n")("o")("n")("s")("t")("o")("p")("m")("o")("d")("e")(bold);
-pr10("s")("c")("r")("o")("l")("l")("m")("o")("d")("e")(bold);
-pr13("e")("r")("r")("o")("r")("s")("t")("o")("p")@|
- ("m")("o")("d")("e")(bold);
-pr5("i")("n")("n")("e")("r")(command);@/
-pr5("o")("u")("t")("e")("r")(command);@/
-pr9("s")("h")("o")("w")("t")("o")("k")("e")("n")(command);@/
-pr9("s")("h")("o")("w")("s")("t")("a")("t")("s")(bold);@/
-pr4("s")("h")("o")("w")(command);@/
-pr12("s")("h")("o")("w")("v")("a")("r")("i")("a")("b")("l")("e")(command);@/
-pr16("s")("h")("o")("w")@|
- ("d")("e")("p")("e")("n")("d")("e")("n")("c")("i")("e")("s")(bold);@/
-pr7("c")("o")("n")("t")("o")("u")("r")(command);@/
-pr10("d")("o")("u")("b")("l")("e")("p")("a")("t")("h")(command);@/
-pr4("a")("l")("s")("o")(command);@/
-pr7("w")("i")("t")("h")("p")("e")("n")(command);@/
-pr10("w")("i")("t")("h")("w")("e")("i")("g")("h")("t")(command);@/
-pr8("d")("r")("o")("p")("p")("i")("n")("g")(command);@/
-pr7("k")("e")("e")("p")("i")("n")("g")(command);@/
-pr7("m")("e")("s")("s")("a")("g")("e")(command);@/
-pr10("e")("r")("r")("m")("e")("s")("s")("a")("g")("e")(command);@/
-pr7("e")("r")("r")("h")("e")("l")("p")(command);@/
-pr8("c")("h")("a")("r")("l")("i")("s")("t")(command);@/
-pr8("l")("i")("g")("t")("a")("b")("l")("e")(command);@/
-pr10("e")("x")("t")("e")("n")("s")("i")("b")("l")("e")(command);@/
-pr10("h")("e")("a")("d")("e")("r")("b")("y")("t")("e")(command);@/
-pr9("f")("o")("n")("t")("d")("i")("m")("e")("n")(command);@/
-pr7("s")("p")("e")("c")("i")("a")("l")(command);@/
-pr10("n")("u")("m")("s")("p")("e")("c")("i")("a")("l")(command);@/
-pr1("%")(comment);@/
-pr2("%")("%")(verbatim);@/
-pr3("%")("%")("%")(set_format);@/
-pr4("%")("%")("%")("%")(mft_comment);@/
-pr1("#")(sharp);@/
-@y
-@ We begin with primitives common to \MF\ and \MP.
-
-The intended use of the macros above might not be immediately obvious,
-but the riddle is answered by the following:
-
-@<Store all the primitives@>=
-id_loc:=18;@/
-pr2(".")(".")(path_join);@/
-pr1("[")(as_is);@/
-pr1("]")(as_is);@/
-pr1("}")(as_is);@/
-pr1("{")(as_is);@/
-pr1(":")(colon);@/
-pr2(":")(":")(colon);@/
-pr3("|")("|")(":")(colon);@/
-pr2(":")("=")(as_is);@/
-pr1(",")(as_is);@/
-pr1(";")(semicolon);@/
-pr1("\")(backslash);@/
-pr2("\")("\")(double_back);@/
-pr5("a")("d")("d")("t")("o")(command);@/
-pr2("a")("t")(bbinary);@/
-pr7("a")("t")("l")("e")("a")("s")("t")(op);@/
-pr10("b")("e")("g")("i")("n")("g")("r")("o")("u")("p")(command);
-pr8("c")("o")("n")("t")("r")("o")("l")("s")(op);@/
-pr4("c")("u")("l")("l")(command);@/
-pr4("c")("u")("r")("l")(op);@/
-pr10("d")("e")("l")("i")("m")("i")("t")("e")("r")("s")(command);@/
-pr8("e")("n")("d")("g")("r")("o")("u")("p")(endit);@/
-pr8("e")("v")("e")("r")("y")("j")("o")("b")(command);@/
-pr6("e")("x")("i")("t")("i")("f")(command);@/
-pr11("e")("x")("p")("a")("n")("d")("a")("f")("t")("e")("r")(command);@/
-pr4("f")("r")("o")("m")(bbinary);@/
-pr7("i")("n")("t")("e")("r")("i")("m")(command);@/
-pr3("l")("e")("t")(command);@/
-pr11("n")("e")("w")("i")("n")("t")("e")("r")("n")("a")("l")(command);@/
-pr2("o")("f")(command);@/
-pr10("r")("a")("n")("d")("o")("m")("s")("e")("e")("d")(command);@/
-pr4("s")("a")("v")("e")(command);@/
-pr10("s")("c")("a")("n")("t")("o")("k")("e")("n")("s")(command);@/
-pr7("s")("h")("i")("p")("o")("u")("t")(command);@/
-pr4("s")("t")("e")("p")(bbinary);@/
-pr3("s")("t")("r")(command);@/
-pr7("t")("e")("n")("s")("i")("o")("n")(op);@/
-pr2("t")("o")(bbinary);@/
-pr5("u")("n")("t")("i")("l")(bbinary);@/
-pr3("d")("e")("f")(command);@/
-pr6("v")("a")("r")("d")("e")("f")(command);@/
-
-@ (There are so many primitives, it's necessary to break this long
-initialization code up into pieces so as not to overflow \.{WEAVE}'s capacity.)
-
-@<Store all the primitives@>=
-pr10("p")("r")("i")("m")("a")("r")("y")("d")("e")("f")(command);@/
-pr12("s")("e")("c")("o")("n")("d")("a")("r")("y")("d")("e")("f")(command);@/
-pr11("t")("e")("r")("t")("i")("a")("r")("y")("d")("e")("f")(command);@/
-pr6("e")("n")("d")("d")("e")("f")(endit);@/
-pr3("f")("o")("r")(command);@/
-pr11("f")("o")("r")("s")("u")("f")("f")("i")("x")("e")("s")(command);@/
-pr7("f")("o")("r")("e")("v")("e")("r")(command);@/
-pr6("e")("n")("d")("f")("o")("r")(endit);@/
-pr5("q")("u")("o")("t")("e")(command);@/
-pr4("e")("x")("p")("r")(command);@/
-pr6("s")("u")("f")("f")("i")("x")(command);@/
-pr4("t")("e")("x")("t")(command);@/
-pr7("p")("r")("i")("m")("a")("r")("y")(command);@/
-pr9("s")("e")("c")("o")("n")("d")("a")("r")("y")(command);@/
-pr8("t")("e")("r")("t")("i")("a")("r")("y")(command);@/
-pr5("i")("n")("p")("u")("t")(input_command);@/
-pr8("e")("n")("d")("i")("n")("p")("u")("t")(bold);@/
-pr2("i")("f")(command);@/
-pr2("f")("i")(endit);@/
-pr4("e")("l")("s")("e")(command);@/
-pr6("e")("l")("s")("e")("i")("f")(command);@/
-pr4("t")("r")("u")("e")(bold);@/
-pr5("f")("a")("l")("s")("e")(bold);@/
-pr11("n")("u")("l")("l")("p")("i")("c")("t")("u")("r")("e")(bold);@/
-pr7("n")("u")("l")("l")("p")("e")("n")(bold);@/
-pr7("j")("o")("b")("n")("a")("m")("e")(bold);@/
-pr10("r")("e")("a")("d")("s")("t")("r")("i")("n")("g")(bold);@/
-pr9("p")("e")("n")("c")("i")("r")("c")("l")("e")(bold);@/
-pr2("=")(":")(as_is);@/
-pr3("=")(":")("|")(as_is);@/
-pr4("=")(":")("|")(">")(as_is);@/
-pr3("|")("=")(":")(as_is);@/
-pr4("|")("=")(":")(">")(as_is);@/
-pr4("|")("=")(":")("|")(as_is);@/
-pr5("|")("=")(":")("|")(">")(as_is);@/
-pr6("|")("=")(":")("|")(">")(">")(as_is);@/
-pr4("k")("e")("r")("n")(binary);
-pr6("s")("k")("i")("p")("t")("o")(command);@/
-
-@ (Does anybody out there remember the commercials that went \.{LS-MFT}?)
-
-@<Store all the prim...@>=
-pr13("n")("o")("r")("m")("a")("l")("d")("e")("v")("i")("a")("t")("e")(op);@/
-pr3("o")("d")("d")(op);@/
-pr5("k")("n")("o")("w")("n")(op);@/
-pr7("u")("n")("k")("n")("o")("w")("n")(op);@/
-pr3("n")("o")("t")(op);@/
-pr7("d")("e")("c")("i")("m")("a")("l")(op);@/
-pr7("r")("e")("v")("e")("r")("s")("e")(op);@/
-pr8("m")("a")("k")("e")("p")("a")("t")("h")(op);@/
-pr7("m")("a")("k")("e")("p")("e")("n")(op);@/
-pr3("o")("c")("t")(op);@/
-pr3("h")("e")("x")(op);@/
-pr5("A")("S")("C")("I")("I")(op);@/
-pr4("c")("h")("a")("r")(op);@/
-pr6("l")("e")("n")("g")("t")("h")(op);@/
-pr13("t")("u")("r")("n")("i")("n")("g")("n")("u")("m")("b")("e")("r")(op);@/
-pr5("x")("p")("a")("r")("t")(op);@/
-pr5("y")("p")("a")("r")("t")(op);@/
-pr6("x")("x")("p")("a")("r")("t")(op);@/
-pr6("x")("y")("p")("a")("r")("t")(op);@/
-pr6("y")("x")("p")("a")("r")("t")(op);@/
-pr6("y")("y")("p")("a")("r")("t")(op);@/
-pr4("s")("q")("r")("t")(op);@/
-pr4("m")("e")("x")("p")(op);@/
-pr4("m")("l")("o")("g")(op);@/
-pr4("s")("i")("n")("d")(op);@/
-pr4("c")("o")("s")("d")(op);@/
-pr5("f")("l")("o")("o")("r")(op);@/
-pr14("u")("n")("i")("f")("o")("r")("m")("d")("e")("v")("i")("a")("t")("e")(op);
- @/
-pr10("c")("h")("a")("r")("e")("x")("i")("s")("t")("s")(op);@/
-pr5("a")("n")("g")("l")("e")(op);@/
-pr5("c")("y")("c")("l")("e")(op);@/
-
-@ (If you think this \.{WEB} code is ugly, you should see the Pascal code
-it produces.)
-
-@<Store all the primitives@>=
-pr13("t")("r")("a")("c")("i")("n")("g")
- ("t")("i")("t")("l")("e")("s")(internal);@/
-pr16("t")("r")("a")("c")("i")("n")("g")
- ("e")("q")("u")("a")("t")("i")("o")("n")("s")(internal);@/
-pr15("t")("r")("a")("c")("i")("n")("g")
- ("c")("a")("p")("s")("u")("l")("e")("s")(internal);@/
-pr14("t")("r")("a")("c")("i")("n")("g")
- ("c")("h")("o")("i")("c")("e")("s")(internal);@/
-pr12("t")("r")("a")("c")("i")("n")("g")
- ("s")("p")("e")("c")("s")(internal);@/
-pr11("t")("r")("a")("c")("i")("n")("g")
- ("p")("e")("n")("s")(internal);@/
-pr15("t")("r")("a")("c")("i")("n")("g")
- ("c")("o")("m")("m")("a")("n")("d")("s")(internal);@/
-pr13("t")("r")("a")("c")("i")("n")("g")
- ("m")("a")("c")("r")("o")("s")(internal);@/
-pr13("t")("r")("a")("c")("i")("n")("g")
- ("o")("u")("t")("p")("u")("t")(internal);@/
-pr12("t")("r")("a")("c")("i")("n")("g")
- ("s")("t")("a")("t")("s")(internal);@/
-pr13("t")("r")("a")("c")("i")("n")("g")
- ("o")("n")("l")("i")("n")("e")(internal);@/
-pr15("t")("r")("a")("c")("i")("n")("g")
- ("r")("e")("s")("t")("o")("r")("e")("s")(internal);@/
-
-@ @<Store all the primitives@>=
-pr4("y")("e")("a")("r")(internal);@/
-pr5("m")("o")("n")("t")("h")(internal);@/
-pr3("d")("a")("y")(internal);@/
-pr4("t")("i")("m")("e")(internal);@/
-pr8("c")("h")("a")("r")("c")("o")("d")("e")(internal);@/
-pr7("c")("h")("a")("r")("e")("x")("t")(internal);@/
-pr6("c")("h")("a")("r")("w")("d")(internal);@/
-pr6("c")("h")("a")("r")("h")("t")(internal);@/
-pr6("c")("h")("a")("r")("d")("p")(internal);@/
-pr6("c")("h")("a")("r")("i")("c")(internal);@/
-pr6("c")("h")("a")("r")("d")("x")(internal);@/
-pr6("c")("h")("a")("r")("d")("y")(internal);@/
-pr10("d")("e")("s")("i")("g")("n")("s")("i")("z")("e")(internal);@/
-pr7("x")("o")("f")("f")("s")("e")("t")(internal);@/
-pr7("y")("o")("f")("f")("s")("e")("t")(internal);@/
-pr7("p")("a")("u")("s")("i")("n")("g")(internal);@/
-pr12("s")("h")("o")("w")
- ("s")("t")("o")("p")("p")("i")("n")("g")(internal);@/
-pr10("f")("o")("n")("t")("m")("a")("k")("i")("n")("g")(internal);@/
-pr8("p")("r")("o")("o")("f")("i")("n")("g")(internal);@/
-pr12("t")("u")("r")("n")("i")("n")("g")("c")("h")("e")("c")("k")(internal);@/
-pr12("w")("a")("r")("n")("i")("n")("g")("c")("h")("e")("c")("k")(internal);@/
-pr12("b")("o")("u")("n")("d")("a")("r")("y")("c")("h")("a")("r")(internal);@/
-
-@ Still more.
-
-@<Store all the prim...@>=
-pr1("+")(abinary);@/
-pr1("-")(abinary);@/
-pr1("*")(abinary);@/
-pr1("/")(as_is);@/
-pr2("+")("+")(binary);@/
-pr3("+")("-")("+")(pyth_sub);@/
-pr3("a")("n")("d")(binary);@/
-pr2("o")("r")(binary);@/
-pr1("<")(as_is);@/
-pr2("<")("=")(less_or_equal);@/
-pr1(">")(as_is);@/
-pr2(">")("=")(greater_or_equal);@/
-pr1("=")(as_is);@/
-pr2("<")(">")(not_equal);@/
-pr9("s")("u")("b")("s")("t")("r")("i")("n")("g")(command);@/
-pr7("s")("u")("b")("p")("a")("t")("h")(command);@/
-pr13("d")("i")("r")("e")("c")("t")("i")("o")("n")@|
- ("t")("i")("m")("e")(command);@/
-pr5("p")("o")("i")("n")("t")(command);@/
-pr10("p")("r")("e")("c")("o")("n")("t")("r")("o")("l")(command);@/
-pr11("p")("o")("s")("t")("c")("o")("n")("t")("r")("o")("l")(command);@/
-pr9("p")("e")("n")("o")("f")("f")("s")("e")("t")(command);@/
-pr1("&")(ampersand);@/
-pr7("r")("o")("t")("a")("t")("e")("d")(binary);@/
-pr7("s")("l")("a")("n")("t")("e")("d")(binary);@/
-pr6("s")("c")("a")("l")("e")("d")(binary);@/
-pr7("s")("h")("i")("f")("t")("e")("d")(binary);@/
-pr11("t")("r")("a")("n")("s")("f")("o")("r")("m")("e")("d")(binary);@/
-pr7("x")("s")("c")("a")("l")("e")("d")(binary);@/
-pr7("y")("s")("c")("a")("l")("e")("d")(binary);@/
-pr7("z")("s")("c")("a")("l")("e")("d")(binary);@/
-pr17("i")("n")("t")("e")("r")("s")("e")("c")("t")("i")("o")("n")@|
- ("t")("i")("m")("e")("s")(binary);@/
-pr7("n")("u")("m")("e")("r")("i")("c")(type_name);@/
-pr6("s")("t")("r")("i")("n")("g")(type_name);@/
-pr7("b")("o")("o")("l")("e")("a")("n")(type_name);@/
-pr4("p")("a")("t")("h")(type_name);@/
-pr3("p")("e")("n")(type_name);@/
-pr7("p")("i")("c")("t")("u")("r")("e")(type_name);@/
-pr9("t")("r")("a")("n")("s")("f")("o")("r")("m")(type_name);@/
-pr4("p")("a")("i")("r")(type_name);@/
-
-@ At last we are done with the tedious initialization of primitives.
-
-@<Store all the prim...@>=
-pr3("e")("n")("d")(endit);@/
-pr4("d")("u")("m")("p")(endit);@/
-pr9("b")("a")("t")("c")("h")("m")("o")("d")("e")(bold);
-pr11("n")("o")("n")("s")("t")("o")("p")("m")("o")("d")("e")(bold);
-pr10("s")("c")("r")("o")("l")("l")("m")("o")("d")("e")(bold);
-pr13("e")("r")("r")("o")("r")("s")("t")("o")("p")@|
- ("m")("o")("d")("e")(bold);
-pr5("i")("n")("n")("e")("r")(command);@/
-pr5("o")("u")("t")("e")("r")(command);@/
-pr9("s")("h")("o")("w")("t")("o")("k")("e")("n")(command);@/
-pr9("s")("h")("o")("w")("s")("t")("a")("t")("s")(bold);@/
-pr4("s")("h")("o")("w")(command);@/
-pr12("s")("h")("o")("w")("v")("a")("r")("i")("a")("b")("l")("e")(command);@/
-pr16("s")("h")("o")("w")@|
- ("d")("e")("p")("e")("n")("d")("e")("n")("c")("i")("e")("s")(bold);@/
-pr7("c")("o")("n")("t")("o")("u")("r")(command);@/
-pr10("d")("o")("u")("b")("l")("e")("p")("a")("t")("h")(command);@/
-pr4("a")("l")("s")("o")(command);@/
-pr7("w")("i")("t")("h")("p")("e")("n")(command);@/
-pr7("m")("e")("s")("s")("a")("g")("e")(command);@/
-pr10("e")("r")("r")("m")("e")("s")("s")("a")("g")("e")(command);@/
-pr7("e")("r")("r")("h")("e")("l")("p")(command);@/
-pr8("c")("h")("a")("r")("l")("i")("s")("t")(command);@/
-pr8("l")("i")("g")("t")("a")("b")("l")("e")(command);@/
-pr10("e")("x")("t")("e")("n")("s")("i")("b")("l")("e")(command);@/
-pr10("h")("e")("a")("d")("e")("r")("b")("y")("t")("e")(command);@/
-pr9("f")("o")("n")("t")("d")("i")("m")("e")("n")(command);@/
-pr7("s")("p")("e")("c")("i")("a")("l")(command);@/
-pr1("%")(comment);@/
-pr2("%")("%")(verbatim);@/
-pr3("%")("%")("%")(set_format);@/
-pr4("%")("%")("%")("%")(mft_comment);@/
-pr1("#")(sharp);@/
-pr4("g")("o")("o")("d")(special_tag);@/
-@z
-
-% The code below follows ideas from the section 646 of `mp.web'.
-@x [75]
-two global variables, |cur_type| and |cur_tok|.
-@y
-two global variables, |cur_type| and |cur_tok|.
-
-The \&{btex}$\,\ldots\,$\&{etex} and \&{verbatimtex}$\,\ldots\,$\&{etex}
-features need to be implemented at a low level in the scanning
-process. This is implemented by changing the behavior of the
-scanner via |scanner_status| global variable.
-
-@d normal=0 {|scanner_status| at ``quiet times''}
-@d verbatimtex_flushing=1 {|scanner_status| when moving verbatim \TeX\ material}
-@d btex_flushing=2 {|scanner_status| when moving \TeX\ code}
-@z
-
-@x [75]
-@!prev_tok:integer; {previous value of |cur_tok|}
-@y
-@!prev_tok:integer; {previous value of |cur_tok|}
-@!scanner_status:normal..btex_flushing; {are we scanning at high speed?}
-@z
-
-@x [79] Allow any 8 bit character in input.
-for i:=0 to " "-1 do char_class[i]:=invalid_class;
-char_class[carriage_return]:=end_line_class;@/
-for i:=127 to 255 do char_class[i]:=invalid_class;
-@y
-for i:=0 to " "-1 do char_class[i]:=letter_class;
-for i:=127 to 255 do char_class[i]:=letter_class;
-char_class[carriage_return]:=end_line_class;
-char_class[@'11]:=space_class; {tab}
-char_class[@'14]:=space_class; {form feed}
-@z
-
-% When dealing with a TeX material we must copy spaces to output.
-@x [81]
-space_class:if start_of_line then emit(indentation)
- else goto switch;
-@y
-space_class:if start_of_line or scanner_status>normal then emit(indentation)
- else goto switch;
-@z
-
-% Set the default set of macros for \MP.
-@x [88]
-so that the first line of the output file will be `\.{\\input mftmac}'.
-@.\\input mftmac@>
-@.mftmac@>
-
-@<Set init...@>=
-out_ptr:=1; out_buf[1]:=" "; out_line:=1; write(tex_file,'\input mftmac');
-@y
-so that the first line of the output file will be `\.{\\input mftmac}'
-or `\.{\\input mptmac}' if a \MP\ file is converted.
-@.\\input mftmac@>
-@.mftmac@>
-@.\\input mptmac@>
-@.mptmac@>
-@<Set init...@>=
-out_ptr:=1; out_buf[1]:=" "; out_line:=1;
-if metapost then begin write(tex_file,'\input mptmac'); end
-else write(tex_file,'\input mftmac');
-@z
-
-@x [97]
- string_token:@<Translate a string token@>;
-@y
- string_token:@<Translate a string token@>;
- verbatim_code,btex_code:@<Copy \TeX\ material@>;
-@z
-
-% [112] Print newline at end of run, exit based upon value of history,
-% and remove the end_of_MFT label.
-@x
-print_ln(banner); {print a ``banner line''}
-@y
-print (banner); {print a ``banner line''}
-print_ln (version_string);
-@z
-
-@x
-end_of_MFT:{here files should be closed if the operating system requires it}
-@<Print the job |history|@>;
-end.
-@y
-@<Print the job |history|@>;
-new_line;
-if (history <> spotless) and (history <> harmless_message)
-then uexit (1)
-else uexit (0);
-end.
-@z
-
-@x [114] System-dependent changes.
-This module should be replaced, if necessary, by changes to the program
-that are necessary to make \.{MFT} work at a particular installation.
-It is usually best to design your change file so that all changes to
-previous modules preserve the module numbering; then everybody's version
-will be consistent with the printed program. More extensive changes,
-which introduce new modules, can be inserted here; then only the index
-itself will get a new module number.
-@^system dependencies@>
-@y
-The user calls \.{MFT} with arguments on the command line. These are
-either filenames or flags (beginning with `\.-'). The following globals
-are for communicating the user's desires to the rest of the program. The
-various |name| variables contain strings with the full names of those
-files, as UNIX knows them.
-
-@d max_style_name = 32
-
-@<Globals...@>=
-@!change_name,@!tex_name:const_c_string;
-@!style_name:array[0..max_style_name-1] of const_c_string;
-@!n_style_name:c_int_type; {Number of values in |style_name| array.}
-@!i_style_name:c_int_type; {The next |style_name|.}
-@!metapost:c_int_type; {|true| for \MP, |false| for \MF}
-
-@ Look at the command line arguments and set the |name| variables accordingly.
-
-At least one file name must be present as the first argument: the \.{mf}
-file. It may have an extension, or it may omit it to get |'.mf'| added.
-If there is only one file name, the output file name is formed by
-replacing the \.{mf} file name extension by |'.tex'|. Thus, the command
-line \.{mf foo} implies the use of the \MF\ input file \.{foo.mf}
-and the output file \.{foo.tex}. If this style of command line, with
-only one argument, is used, the default style file, |plain.mft|, will be
-used to provide basic formatting.
-
-@d argument_is (#) == (strcmp (long_options[option_index].name, #) = 0)
-
-@<Define |parse_arguments|@> =
-procedure parse_arguments;
-const n_options = 5; {Pascal won't count array lengths for us.}
-var @!long_options: array[0..n_options] of getopt_struct;
- @!getopt_return_val: integer;
- @!option_index: c_int_type;
- @!current_option: 0..n_options;
- @!suffix: const_c_string;
-begin
- @<Initialize the option variables@>;
- @<Define the option table@>;
- n_style_name := 0;
- repeat
- getopt_return_val := getopt_long_only (argc, argv, '', long_options,
- address_of (option_index));
- if getopt_return_val = -1 then begin
- do_nothing; {End of arguments; we exit the loop below.}
-
- end else if getopt_return_val = "?" then begin
- usage (my_name);
-
- end else if argument_is ('help') then begin
- usage_help (MFT_HELP, nil);
-
- end else if argument_is ('version') then begin
- print_version_and_exit (banner, nil,
- 'D.E. Knuth (MP changes by W. Bzyl)',
- nil);
-
- end else if argument_is ('change') then begin
- change_name := extend_filename (optarg, 'ch');
-
- end else if argument_is ('style') then begin
- if (n_style_name = max_style_name) then begin
- fatal_error ('Too many style files specified.');
- usage (my_name);
- end;
- style_name[n_style_name] := extend_filename (optarg, 'mft');
- n_style_name := n_style_name + 1;
-
- end; {Else it was a flag; |getopt| has already done the assignment.}
- until getopt_return_val = -1;
-
- {Now |optind| is the index of first non-option on the command line.
- We must have exactly one remaining argument.}
- if (optind + 1 <> argc) then begin
- write_ln (stderr, my_name, ': Need exactly one file argument.');
- usage (my_name);
- end;
-
- suffix := find_suffix (cmdline (optind));
- if suffix and (strcmp (suffix, 'mp') = 0) then begin
- metapost := true;
- tex_name := basename_change_suffix (cmdline (optind), '.mp', '.tex');
- end else begin
- tex_name := basename_change_suffix (cmdline (optind), '.mf', '.tex');
- end;
-
- if (n_style_name = 0) then begin
- if metapost then
- style_name[0] := 'mplain.mft'
- else
- style_name[0] := 'plain.mft';
- n_style_name := 1;
- end;
-end;
-
-@ Here are the options we allow. The first is one of the standard GNU options.
-@.-help@>
-
-@<Define the option...@> =
-current_option := 0;
-long_options[current_option].name := 'help';
-long_options[current_option].has_arg := 0;
-long_options[current_option].flag := 0;
-long_options[current_option].val := 0;
-incr (current_option);
-
-@ Another of the standard options.
-@.-version@>
-
-@<Define the option...@> =
-long_options[current_option].name := 'version';
-long_options[current_option].has_arg := 0;
-long_options[current_option].flag := 0;
-long_options[current_option].val := 0;
-incr (current_option);
-
-@ Here is the option to set a change file.
-@.-change@>
-
-@<Define the option...@> =
-long_options[current_option].name := 'change';
-long_options[current_option].has_arg := 1;
-long_options[current_option].flag := 0;
-long_options[current_option].val := 0;
-incr (current_option);
-
-@ Here is the option to set the style file.
-@.-style@>
-
-@<Define the option...@> =
-long_options[current_option].name := 'style';
-long_options[current_option].has_arg := 1;
-long_options[current_option].flag := 0;
-long_options[current_option].val := 0;
-incr (current_option);
-
-@ The option to set a \MP\ file processing.
-
-@<Define the option...@> =
-long_options[current_option].name := 'metapost';
-long_options[current_option].has_arg := 0;
-long_options[current_option].flag := address_of (metapost);
-long_options[current_option].val := 1;
-incr (current_option);
-
-@ |metapost| defaults to |false|; will become |true| for \MP.
-
-@<Initialize the option...@> =
-metapost:=false;
-
-@ An element with all zeros always ends the list of options.
-
-@<Define the option...@> =
-long_options[current_option].name := 0;
-long_options[current_option].has_arg := 0;
-long_options[current_option].flag := 0;
-long_options[current_option].val := 0;
-
-@ Store primitives specific for \MF.
-
-@<Store all the prim...@>=
-if not metapost then begin
- pr12("a")("u")("t")("o")("r")("o")("u")("n")("d")("i")("n")("g")(internal);@/
- pr7("c")("h")("a")("r")("f")("a")("m")(internal);@/
- pr8("d")("r")("o")("p")("p")("i")("n")("g")(command);@/
- pr7("d")("i")("s")("p")("l")("a")("y")(command);@/
- pr6("f")("i")("l")("l")("i")("n")(internal);@/
- pr11("g")("r")("a")("n")("u")("l")("a")("r")("i")("t")("y")(internal);@/
- pr8("i")("n")("w")("i")("n")("d")("o")("w")(bbinary);@/
- pr4("h")("p")("p")("p")(internal);@/
- pr7("k")("e")("e")("p")("i")("n")("g")(command);@/
- pr10("n")("u")("m")("s")("p")("e")("c")("i")("a")("l")(command);@/
- pr10("o")("p")("e")("n")("w")("i")("n")("d")("o")("w")(command);@/
- pr9("s")("m")("o")("o")("t")("h")("i")("n")("g")(internal);@/
- pr4("v")("p")("p")("p")(internal);@/
- pr11("t")("o")("t")("a")("l")("w")("e")("i")("g")("h")("t")(op);@/
- pr12("t")("r")("a")("c")("i")("n")("g")("e")("d")("g")("e")("s")(internal);@/
- pr10("w")("i")("t")("h")("w")("e")("i")("g")("h")("t")(command);@/
-end;
-
-@ Store primitives specific for \MP.
-
-@<Store all the prim...@>=
-if metapost then begin
- pr9("a")("r")("c")("l")("e")("n")("g")("t")("h")(op);@/
- pr7("a")("r")("c")("t")("i")("m")("e")(command);@/
- pr8("b")("l")("u")("e")("p")("a")("r")("t")(op);@/
- pr7("b")("o")("u")("n")("d")("e")("d")(op);@/
- pr4("b")("t")("e")("x")(btex_code);@/
- pr4("c")("l")("i")("p")(command);@/
- pr7("c")("l")("i")("p")("p")("e")("d")(op);@/
- pr9("c")("l")("o")("s")("e")("f")("r")("o")("m")(input_command);@/
- pr5("c")("o")("l")("o")("r")(type_name);@/
- pr6("d")("a")("s")("h")("e")("d")(command);@/
- pr8("d")("a")("s")("h")("p")("a")("r")("t")(op);@/
- pr4("e")("t")("e")("x")(etex_marker);@/
- pr6("f")("i")("l")("l")("e")("d")(op);@/
- pr8("f")("o")("n")("t")("p")("a")("r")("t")(op);@/
- pr8("f")("o")("n")("t")("s")("i")("z")("e")(op);@/
- pr9("g")("r")("e")("e")("n")("p")("a")("r")("t")(op);@/
- pr6("i")("n")("f")("o")("n")("t")(binary);@/
- pr8("l")("i")("n")("e")("j")("o")("i")("n")(internal);@/
- pr7("l")("i")("n")("e")("c")("a")("p")(internal);@/
- pr8("l")("l")("c")("o")("r")("n")("e")("r")(op);@/
- pr8("l")("r")("c")("o")("r")("n")("e")("r")(op);@/
- pr10("m")("i")("t")("e")("r")("l")("i")("m")("i")("t")(internal);@/
- pr8("m")("p")("x")("b")("r")("e")("a")("k")(bold);@/
- pr8("p")("a")("t")("h")("p")("a")("r")("t")(op);@/
- pr7("p")("e")("n")("p")("a")("r")("t")(op);@/
- pr9("p")("r")("o")("l")("o")("g")("u")("e")("s")(internal);@/
- pr7("r")("e")("d")("p")("a")("r")("t")(op);@/
- pr8("r")("e")("a")("d")("f")("r")("o")("m")(input_command);@/
- pr9("s")("e")("t")("b")("o")("u")("n")("d")("s")(command);@/
- pr7("s")("t")("r")("o")("k")("e")("d")(op);@/
- pr8("t")("e")("x")("t")("p")("a")("r")("t")(op);@/
- pr7("t")("e")("x")("t")("u")("a")("l")(op);@/
- pr16("t")("r")("a")("c")("i")("n")("g")
- ("l")("o")("s")("t")("c")("h")("a")("r")("s")(internal);@/
- pr11("t")("r")("u")("e")("c")("o")("r")("n")("e")("r")("s")(internal);@/
- pr8("u")("l")("c")("o")("r")("n")("e")("r")(op);@/
- pr8("u")("r")("c")("o")("r")("n")("e")("r")(op);@/
- pr11("v")("e")("r")("b")("a")("t")("i")("m")("t")("e")("x")(verbatim_code);@/
- pr6("w")("i")("t")("h")("i")("n")(bbinary);@/
- pr9("w")("i")("t")("h")("c")("o")("l")("o")("r")(command);@/
- pr5("w")("r")("i")("t")("e")(command);@/
-end;
-
-@ Here an extra section is added.
-`\.{btex}' token is translated to `\.{\\mftbeginB}' and
-`\.{verbatimtex}' to `\.{\\mftbeginV}'.
-`\.{etex}' is translated to `\.{\\mftend}'.
-These \TeX\ macros are defined in \.{mptmac.tex}.
-@.mptmac@>
-@<Copy \TeX\ material@>=
- begin out4("\")("m")("f")("t"); out5("b")("e")("g")("i")("n");
- if cur_type=verbatim_code then begin
- out("V");
- scanner_status:=verbatimtex_flushing;
- end else if cur_type=btex_code then begin
- out("B");
- scanner_status:=btex_flushing;
- end;
- out("{"); out_name(cur_tok); out("}");
- get_next;
- while cur_type<>etex_marker do begin
- if cur_type=indentation then begin out(" "); end
- else if cur_type=end_of_line then begin
- flush_buffer(out_ptr,false);
- empty_buffer:=true;
- end
- else copy(id_first);
- get_next;
- end;
- out4("\")("m")("f")("t"); out3("e")("n")("d");
- out("{"); out_name(cur_tok); out("}");
- if scanner_status=verbatimtex_flushing then out("$");
- scanner_status:=normal;
- end
-@z