28-Jan-87 05:11:16-PST,16195;000000000000 Return-Path: Received: from Cs.Ucl.AC.UK by SU-SCORE.ARPA with TCP; Wed 28 Jan 87 05:06:51-PST Received: from vaxb.rhbnc.ac.uk by mv1.Cs.Ucl.AC.UK via Janet with NIFTP id aa03008; 28 Jan 87 12:48 WET Date: 28-JAN-1987 12:48:16 From: CHAA006%vaxb.rhbnc.ac.uk@Cs.Ucl.AC.UK To: TEXHAX <@Cs.Ucl.AC.UK:TEXHAX@score.stanford.edu> Subject: Pretex In the light of experience, I have modified the source of Pretex (the DEC-169 to TeX conversion utility). The original version produced TeX composite sequences for all TeX active characters (e.g. {, }. \); the new version passes through unchanged all characters in the range ASCII 0..126 with the exception of double-quote, less- and greater-than, and solidus, for which four characters composite sequences are still produced. ** Phil Philip Taylor (Royal Holloway & Bedford New College; University of London; U.K) Bitnet/NetNorth/Earn: chaa006@vaxa.rhbnc.ac.uk (or) chaa006%rhbnc.vaxa@ac.uk (or) : chaa006@vaxb.rhbnc.ac.uk (or) chaa006%rhbnc.vaxb@ac.uk Arpa : chaa006%vaxa.rhbnc.ac.uk@ucl-cs.arpa (or) : chaa006%vaxb.rhbnc.ac.uk@ucl-cs.arpa ================================== PRETEX.PAS ================================== program pretex (input, output, dec169in, texout); { This program will read DEC-169 files, and produce TeX files as output } const max = 80; debug = true; type string = varying [max] of char; word = 0 .. 65535; type dec169 = (nul, soh, stx, etx, eot, enq, ack, bel, bs, ht, lf, vt, ff, cr, so, si, dle, dc1, dc2, dc3, dc4, nak, syn, etb, can, em, sub, esc, fs, gs, rs, us, space, exclamation, double_quote, hash, dollar, per_cent, ampersand, acute, open_round, close_round, asterisk, plus, comma, minus, period, slash, digit_0, digit_1, digit_2, digit_3, digit_4, digit_5, digit_6, digit_7, digit_8, digit_9, colon, semi_colon, less_than, equals, greater_than, interrogative, commercial_at, upper_case_A, upper_case_B, upper_case_C, upper_case_D, upper_case_E, upper_case_F, upper_case_G, upper_case_H, upper_case_I, upper_case_J, upper_case_K, upper_case_L, upper_case_M, upper_case_N, upper_case_O, upper_case_P, upper_case_Q, upper_case_R, upper_case_S, upper_case_T, upper_case_U, upper_case_V, upper_case_W, upper_case_X, upper_case_Y, upper_case_Z, open_square, back_slash, close_square, caret, underscore, grave, lower_case_a, lower_case_b, lower_case_c, lower_case_d, lower_case_e, lower_case_f, lower_case_g, lower_case_h, lower_case_i, lower_case_j, lower_case_k, lower_case_l, lower_case_m, lower_case_n, lower_case_o, lower_case_p, lower_case_q, lower_case_r, lower_case_s, lower_case_t, lower_case_u, lower_case_v, lower_case_w, lower_case_x, lower_case_y, lower_case_z, open_brace, solidus, close_brace, tilde, del, k128, k129, k130, k131, ind, nel, ssa, esa, hts, htu, vts, pld, plu, ri, ss2, ss3, dcs, pu1, pu2, sts, cch, mw, spa, epa, k152, k153, k154, csi, st, osc, pm, apc, k160, inverted_exclamation, cent, pound, k164, yen, k166, section, currency, copyright, lower_case_a_underscored, open_guillemets, k172, k173, k174, k175, degree, plus_minus, super_2, super_3, k180, mu, paragraph, centred_period, k184, super_1, lower_case_o_underscored, close_guillemets, quarter, half, k190, inverted_interrogative, upper_case_A_grave, upper_case_A_acute, upper_case_A_caret, upper_case_A_tilde, upper_case_A_trema, upper_case_A_ring, upper_case_AE_digraph, upper_case_C_cedilla, upper_case_E_grave, upper_case_E_acute, upper_case_E_caret, upper_case_E_trema, upper_case_I_grave, upper_case_I_acute, upper_case_I_caret, upper_case_I_trema, k208, upper_case_N_tilde, upper_case_O_grave, upper_case_O_acute, upper_case_O_caret, upper_case_O_tilde, upper_case_O_trema, upper_case_OE_digraph, upper_case_O_slashed, upper_case_U_grave, upper_case_U_acute, upper_case_U_caret, upper_case_U_trema, upper_case_Y_trema, k222, beta, lower_case_a_grave, lower_case_a_acute, lower_case_a_caret, lower_case_a_tilde, lower_case_a_trema, lower_case_a_ring, lower_case_ae_digraph, lower_case_c_cedilla, lower_case_e_grave, lower_case_e_acute, lower_case_e_caret, lower_case_e_trema, lower_case_i_grave, lower_case_i_acute, lower_case_i_caret, lower_case_i_trema, k240, lower_case_n_tilde, lower_case_o_grave, lower_case_o_acute, lower_case_o_caret, lower_case_o_tilde, lower_case_o_trema, lower_case_oe_digraph, lower_case_o_slashed, lower_case_u_grave, lower_case_u_acute, lower_case_u_caret, lower_case_u_trema, lower_case_y_trema, k254, k255); var dec169in, texout: text; ch: char; i: dec169; chr169: array [char] of dec169; [external (lib$signal)] procedure report (%immed status: integer); external; [external (cli$get_value)] function get_value (p_name: [class_s] packed array [$l1 .. $u1: integer] of char; var p_value: [class_s] packed array [$l2 .. $u2: integer] of char; var p_length: [word] word): integer; external; procedure call (status: integer); begin if not odd(status) then report (status) end; procedure open_files (var source, sink: text); var source_file_name: string; sf_length: integer; begin call (get_value ('SOURCE', source_file_name.body, source_file_name.length)); open (source, source_file_name, history := readonly, default := 'PRETEX.TXT'); reset (source); open (sink, '.TEX', history := new, default := source_file_name, record_length := 511); rewrite (sink) end; begin for i := nul to k255 do chr169 [chr (ord (i))] := i; open_files (dec169in, texout); while not eof (dec169in) do begin while not eoln (dec169in) do begin read (dec169in, ch); i := chr169 [ch]; ch := chr (ord (ch) mod ord (k128)); case i of nul: write(texout,ch); soh: write(texout,ch); stx: write(texout,ch); etx: write(texout,ch); eot: write(texout,ch); enq: write(texout,ch); ack: write(texout,ch); bel: write(texout,ch); bs: write(texout,ch); ht: write(texout,ch); lf: write(texout,ch); vt: write(texout,ch); ff: write(texout,ch); cr: write(texout,ch); so: write(texout,ch); si: write(texout,ch); dle: write(texout,ch); dc1: write(texout,ch); dc2: write(texout,ch); dc3: write(texout,ch); dc4: write(texout,ch); nak: write(texout,ch); syn: write(texout,ch); etb: write(texout,ch); can: write(texout,ch); em: write(texout,ch); sub: write(texout,ch); esc: write(texout,ch); fs: write(texout,ch); gs: write(texout,ch); rs: write(texout,ch); us: write(texout,ch); space: write(texout,ch); exclamation: write(texout,ch); double_quote: write(texout,'{$\prime\prime$}'); hash: write(texout,ch); dollar: write(texout,ch); per_cent: write(texout,ch); ampersand: write(texout,ch); acute: write(texout,ch); open_round: write(texout,ch); close_round: write(texout,ch); asterisk: write(texout,ch); plus: write(texout,ch); comma: write(texout,ch); minus: write(texout,ch); period: write(texout,ch); slash: write(texout,ch); digit_0: write(texout,ch); digit_1: write(texout,ch); digit_2: write(texout,ch); digit_3: write(texout,ch); digit_4: write(texout,ch); digit_5: write(texout,ch); digit_6: write(texout,ch); digit_7: write(texout,ch); digit_8: write(texout,ch); digit_9: write(texout,ch); colon: write(texout,ch); semi_colon: write(texout,ch); less_than: write(texout,'{$<$}'); equals: write(texout,ch); greater_than: write(texout,'{$>$}'); interrogative: write(texout,ch); commercial_at: write(texout,ch); upper_case_A: write(texout,ch); upper_case_B: write(texout,ch); upper_case_C: write(texout,ch); upper_case_D: write(texout,ch); upper_case_E: write(texout,ch); upper_case_F: write(texout,ch); upper_case_G: write(texout,ch); upper_case_H: write(texout,ch); upper_case_I: write(texout,ch); upper_case_J: write(texout,ch); upper_case_K: write(texout,ch); upper_case_L: write(texout,ch); upper_case_M: write(texout,ch); upper_case_N: write(texout,ch); upper_case_O: write(texout,ch); upper_case_P: write(texout,ch); upper_case_Q: write(texout,ch); upper_case_R: write(texout,ch); upper_case_S: write(texout,ch); upper_case_T: write(texout,ch); upper_case_U: write(texout,ch); upper_case_V: write(texout,ch); upper_case_W: write(texout,ch); upper_case_X: write(texout,ch); upper_case_Y: write(texout,ch); upper_case_Z: write(texout,ch); open_square: write(texout,ch); back_slash: write(texout,ch); close_square: write(texout,ch); caret: write(texout,ch); underscore: write(texout,ch); grave: write(texout,ch); lower_case_a: write(texout,ch); lower_case_b: write(texout,ch); lower_case_c: write(texout,ch); lower_case_d: write(texout,ch); lower_case_e: write(texout,ch); lower_case_f: write(texout,ch); lower_case_g: write(texout,ch); lower_case_h: write(texout,ch); lower_case_i: write(texout,ch); lower_case_j: write(texout,ch); lower_case_k: write(texout,ch); lower_case_l: write(texout,ch); lower_case_m: write(texout,ch); lower_case_n: write(texout,ch); lower_case_o: write(texout,ch); lower_case_p: write(texout,ch); lower_case_q: write(texout,ch); lower_case_r: write(texout,ch); lower_case_s: write(texout,ch); lower_case_t: write(texout,ch); lower_case_u: write(texout,ch); lower_case_v: write(texout,ch); lower_case_w: write(texout,ch); lower_case_x: write(texout,ch); lower_case_y: write(texout,ch); lower_case_z: write(texout,ch); open_brace: write(texout,ch); solidus: write(texout,'{$|$}'); close_brace: write(texout,ch); tilde: write(texout,ch); del: write(texout,' '); k128: write(texout,' '); k129: write(texout,' '); k130: write(texout,' '); k131: write(texout,' '); ind: write(texout,' '); nel: write(texout,' '); ssa: write(texout,' '); esa: write(texout,' '); hts: write(texout,' '); htu: write(texout,' '); vts: write(texout,' '); pld: write(texout,' '); plu: write(texout,' '); ri: write(texout,' '); ss2: write(texout,' '); ss3: write(texout,' '); dcs: write(texout,' '); pu1: write(texout,' '); pu2: write(texout,' '); sts: write(texout,' '); cch: write(texout,' '); mw: write(texout,' '); spa: write(texout,' '); epa: write(texout,' '); k152: write(texout,' '); k153: write(texout,' '); k154: write(texout,' '); csi: write(texout,' '); st: write(texout,' '); osc: write(texout,' '); pm: write(texout,' '); apc: write(texout,' '); k160: write(texout,' '); inverted_exclamation: write(texout,'{<}'); cent: write(texout,'{\rlap/c}'); pound: write(texout,'{\it\$}'); k164: write(texout,' '); yen: write(texout,'{\rlap=Y}'); k166: write(texout,' '); section: write(texout,'{\S}'); currency: write(texout,'{\rlap{\mathhexbox202}\kern0.15em\mathhexbox20E}'); copyright: write(texout,'{\copyright}'); lower_case_a_underscored: write(texout,'{\b a}'); open_guillemets: write(texout,'{\mathhexbox21C}'); k172: write(texout,' '); k173: write(texout,' '); k174: write(texout,' '); k175: write(texout,' '); degree: write(texout,'{${}^\circ$}'); plus_minus: write(texout,'{\mathhexbox206}'); super_2: write(texout,'{$ ^2$}'); super_3: write(texout,'{$ ^3$}'); k180: write(texout,' '); mu: write(texout,'{$\mu$}'); paragraph: write(texout,'{\P}'); centred_period: write(texout,'{\mathhexbox20F}'); k184: write(texout,' '); super_1: write(texout,'{$ ^1$}'); lower_case_o_underscored: write(texout,'{\b o}'); close_guillemets: write(texout,'{\mathhexbox21D}'); quarter: write(texout,'{$1\over4$}'); half: write(texout,'{$1\over2$}'); k190: write(texout,' '); inverted_interrogative: write(texout,'{>}'); upper_case_A_grave: write(texout,'{\`A}'); upper_case_A_acute: write(texout,'{\''A}'); upper_case_A_caret: write(texout,'{\^A}'); upper_case_A_tilde: write(texout,'{\~A}'); upper_case_A_trema: write(texout,'{\"A}'); upper_case_A_ring: write(texout,'{\AA}'); upper_case_AE_digraph: write(texout,'{\AE}'); upper_case_C_cedilla: write(texout,'{\c C}'); upper_case_E_grave: write(texout,'{\`E}'); upper_case_E_acute: write(texout,'{\''E}'); upper_case_E_caret: write(texout,'{\^E}'); upper_case_E_trema: write(texout,'{\"E}'); upper_case_I_grave: write(texout,'{\`I}'); upper_case_I_acute: write(texout,'{\''I}'); upper_case_I_caret: write(texout,'{\^I}'); upper_case_I_trema: write(texout,'{\"I}'); k208: write(texout,' '); upper_case_N_tilde: write(texout,'{\~N}'); upper_case_O_grave: write(texout,'{\`O}'); upper_case_O_acute: write(texout,'{\''O}'); upper_case_O_caret: write(texout,'{\^O}'); upper_case_O_tilde: write(texout,'{\~O}'); upper_case_O_trema: write(texout,'{\"O}'); upper_case_OE_digraph: write(texout,'{\OE}'); upper_case_O_slashed: write(texout,'{\O}'); upper_case_U_grave: write(texout,'{\`U}'); upper_case_U_acute: write(texout,'{\''U}'); upper_case_U_caret: write(texout,'{\^U}'); upper_case_U_trema: write(texout,'{\"U}'); upper_case_Y_trema: write(texout,'{\"Y}'); k222: write(texout,' '); beta: write(texout,'{\ss}'); lower_case_a_grave: write(texout,'{\`a}'); lower_case_a_acute: write(texout,'{\''a}'); lower_case_a_caret: write(texout,'{\^a}'); lower_case_a_tilde: write(texout,'{\~a}'); lower_case_a_trema: write(texout,'{\"a}'); lower_case_a_ring: write(texout,'{\aa}'); lower_case_ae_digraph: write(texout,'{\ae}'); lower_case_c_cedilla: write(texout,'{\c c}'); lower_case_e_grave: write(texout,'{\`e}'); lower_case_e_acute: write(texout,'{\''e}'); lower_case_e_caret: write(texout,'{\^e}'); lower_case_e_trema: write(texout,'{\"e}'); lower_case_i_grave: write(texout,'{\`\i}'); lower_case_i_acute: write(texout,'{\''\i}'); lower_case_i_caret: write(texout,'{\^\i}'); lower_case_i_trema: write(texout,'{\"\i}'); k240: write(texout,' '); lower_case_n_tilde: write(texout,'{\~n}'); lower_case_o_grave: write(texout,'{\`o}'); lower_case_o_acute: write(texout,'{\''o}'); lower_case_o_caret: write(texout,'{\^o}'); lower_case_o_tilde: write(texout,'{\~o}'); lower_case_o_trema: write(texout,'{\"o}'); lower_case_oe_digraph: write(texout,'{\oe}'); lower_case_o_slashed: write(texout,'{\o}'); lower_case_u_grave: write(texout,'{\`u}'); lower_case_u_acute: write(texout,'{\''u}'); lower_case_u_caret: write(texout,'{\^u}'); lower_case_u_trema: write(texout,'{\"u}'); lower_case_y_trema: write(texout,'{\"y}'); k254: write(texout,' '); k255: write(texout,' ') end {case} end; readln (dec169in); writeln (texout) end end. -------